Настройте Wordpress в облачной службе Azure для подключения к Azure MySQL по протоколу SSL


Мы запускаем Wordpress в подпапке нашего основного.СЕТЕВОЕ решение на облачном сервисе. Мы переместили наш MySQL из CloudDB в Azure MySQL, однако он будет подключаться только в том случае, если мы отключим "Принудительное SSL-соединение".

Вордпресс wp-config.php имеет следующее

define('DB_SSL', true);

Я предполагаю, что проблема в том, что нам нужно передать сертификат, но мне не ясно, как мы можем установить его в Wordpress, чтобы он передавался при подключении по SSL.

Author: Jezbers, 2017-12-24

3 answers

Вот что я сделал:

  1. Получите SSL-сертификат и сохраните файл сертификата в корневом каталоге моего проекта 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 );
    }
    

Решение кажется немного грязным, но оно работает для меня.

 3
Author: Aaron Chen, 2017-12-25 08:45:41

Я обнаружил, что решение намного проще при использовании сервера базы данных MySQL Azure в сочетании с изображением контейнера Wordpress. Если вы используете VPS, это может быть неприменимо.

  • Загрузите файл BaltimoreCyberTrustRoot.crt.pem, на который ссылается здесь: https://docs.microsoft.com/en-us/azure/mysql/howto-configure-ssl
  • Поместите файл в корневой каталог вашей установки Wordpress
  • Добавьте эти две переменные в wp-конфигурация:
  • define( 'MYSQL_CLIENT_FLAGS', MYSQLI_CLIENT_SSL );
  • define('MYSQL_SSL_CA_PATH','/');
 1
Author: esjay, 2018-04-30 16:16:31

Это решит проблему, добавив эти строки в 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 );
 0
Author: Anurag Tiwari, 2018-06-21 07:27:35