Reputation: 814
We run Wordpress in a sub folder of our main .NET solution on a cloud service. We have moved our MySQL from CloudDB to Azure MySQL, however it will only connect if we set the "Enforce SSL Connection" to disabled.
The Wordpress wp-config.php has the following
define('DB_SSL', true);
I presume the issue is we need to pass a certificate, but it is not clear to me how we can set this in Wordpress so it is passed when connecting over SSL.
Upvotes: 7
Views: 4243
Reputation: 11
The solutions that work for me, add to wp-config.php:
PHP7.x
define( 'MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL |
MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT );
define( 'MYSQL_SSL_CA', getenv('MYSQL_SSL_CA'));
PHP5.x
define('MYSQL_CLIENT_FLAGS', MYSQL_CLIENT_SSL);
define( 'MYSQL_SSL_CA', getenv('MYSQL_SSL_CA'));
Upvotes: 1
Reputation: 103
This will solve the issue by adding these lines to wp_config.php
define(‘MYSQL_CLIENT_FLAGS’, MYSQLI_CLIENT_SSL);
define(‘MYSQL_SSL_CA’, getenv(‘MYSQL_SSL_CA’));
define(‘MYSQL_CLIENT_FLAGS’, MYSQLI_CLIENT_SSL | MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT );
Upvotes: 3
Reputation: 165
I found the solution to be much simpler when using an Azure mySQL database server in conjunction with a Wordpress container image. If you're using a VPS this may not apply.
define( 'MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL );
define('MYSQL_SSL_CA_PATH','/');
Upvotes: 2
Reputation: 9940
Here is what I did:
Obtain SSL certificate and save the certificate file to the root of my Wordpress project.
Add the following into wp-config.php
:
define('DB_SSL', true);
Add this to the function db_connect()
in my wp-includes/wp-db.php
. It must be called before mysqli_real_connect()
:
// Just add this line
mysqli_ssl_set($this->dbh, NULL, NULL, ABSPATH . 'BaltimoreCyberTrustRoot.crt.pem', NULL, NULL);
if ( WP_DEBUG ) {
mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
} else {
@mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
}
The solution seems a bit dirty but it works for me.
Upvotes: 3