在Azure Cloud Service上配置Wordpress以通过SSL连接到Azure MySQL

时间:2017-12-24 10:50:16

标签: php mysql wordpress azure ssl

我们在云服务的主要.NET解决方案的子文件夹中运行Wordpress。我们已将MySQL从CloudDB迁移到Azure MySQL,但只有在我们将“强制SSL连接”设置为禁用时才会连接。

Wordpress wp-config.php具有以下内容

define('DB_SSL', true);

我认为问题是我们需要传递证书,但我不清楚如何在Wordpress中设置它,以便在通过SSL连接时传递它。

3 个答案:

答案 0 :(得分:3)

这是我做的:

  1. Obtain SSL certificate并将证书文件保存到我的Wordpress项目的根目录。

  2. 将以下内容添加到wp-config.php

    define('DB_SSL', true);
    
  3. 将此添加到我的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 );
    }
    
  4. 解决方案似乎有点脏,但它对我有用。

答案 1 :(得分:1)

当将Azure mySQL数据库服务器与Wordpress容器映像结合使用时,我发现解决方案要简单得多。如果您使用的是VPS,则可能不适用。

答案 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 );