我们在云服务的主要.NET解决方案的子文件夹中运行Wordpress。我们已将MySQL从CloudDB迁移到Azure MySQL,但只有在我们将“强制SSL连接”设置为禁用时才会连接。
Wordpress wp-config.php具有以下内容
define('DB_SSL', true);
我认为问题是我们需要传递证书,但我不清楚如何在Wordpress中设置它,以便在通过SSL连接时传递它。
答案 0 :(得分:3)
这是我做的:
Obtain SSL certificate并将证书文件保存到我的Wordpress项目的根目录。
将以下内容添加到wp-config.php
:
define('DB_SSL', true);
将此添加到我的db_connect()
中的wp-includes/wp-db.php
函数中。必须在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 );
}
解决方案似乎有点脏,但它对我有用。
答案 1 :(得分:1)
当将Azure mySQL数据库服务器与Wordpress容器映像结合使用时,我发现解决方案要简单得多。如果您使用的是VPS,则可能不适用。
define( 'MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL );
define('MYSQL_SSL_CA_PATH','/');
答案 2 :(得分:0)
这将通过将这些行添加到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 );