Был такой же вопрос. К счастью, некоторые другие люди предложили здесь разумное решение: https://core.trac.wordpress.org/ticket/28625. В конце концов, вот что я сделал, чтобы заставить SSL работать:
<сильный>1. Добавьте следующее в файл wordpress wp-includes/wp-db.php. (кроме последних двух строк, которые предназначены только для ссылки на точку вставки)
//ADDED per https://core.trac.wordpress.org/ticket/28625
// call set_ssl if mysql client flag set and settings available
if ( $client_flags & MYSQL_CLIENT_SSL ) {
$pack = array( $this->dbh );
$call_set = false;
foreach( array( 'MYSQL_SSL_KEY', 'MYSQL_SSL_CERT', 'MYSQL_SSL_CA',
'MYSQL_SSL_CAPATH', 'MYSQL_SSL_CIPHER' ) as $opt_key ) {
$pack[] = ( defined( $opt_key ) ) ? constant( $opt_key ) : null;
$call_set |= defined( $opt_key );
}
/* Now if anything was packed - unpack into the function.
* Note this doesn't check if paths exist, as per the PHP doc
* at http://www.php.net/manual/en/mysqli.ssl-set.php: "This
* function always returns TRUE value. If SSL setup is incorrect
* mysqli_real_connect() will return an error ..."
*/
if ( $call_set ) { // SSL added here!
call_user_func_array( 'mysqli_ssl_set', $pack );
}
}//END ADD - below is the point above which to insert this
if ( WP_DEBUG ) {
mysqli_real_connect( $this->dbh, $host, $this->dbuser, $this->dbpassword, null, $port, $socket, $client_flags );
<сильный>2. Настройте файл wordpress wp-config.php.
Добавьте и настройте следующие строки в файле wp-config.php. Вы можете протестировать их в процессе разработки/постановки, а также в рабочей среде, если у вас несколько сред.
define('DB_HOST', 'rds-yourserver-abcdefghi9j.us-west-1.rds.amazonaws.com');
define('MYSQL_CLIENT_FLAGS', MYSQL_CLIENT_SSL);//This activates SSL mode
define('MYSQL_SSL_CA', '/file/path/to/your/aws/rds-combined-ca-bundle.pem');
Обратите внимание, что есть 5 доступных настроек MYSQL_SSL*, которые вы можете использовать в своей конфигурации для каждого кода в #1 выше. Мое подключение к RDS работает через SSL только с опцией _CA.
<сильный>3. Проверка работоспособности: ваше соединение зашифровано.
Добавьте файл быстрого теста, чтобы показать, использует ли текущее соединение Wordpress SSL или нет. Создайте пример файла, подобного этому, с именем test.php и поместите его в корень WordPress или куда-нибудь, доступный в Интернете. Не забудьте удалить этот файл после завершения тестирования.
<?php
require( dirname( __FILE__ ) . '/wp-blog-header.php' ); //EDIT THIS PATH SO IT IS CORRECT FOR YOUR test.php file relative to the wp-blog-header.php file
global $wpdb;
$row = $wpdb->get_row( "SHOW STATUS LIKE 'Ssl_cipher'" );
var_dump($row);
/*
If you are connected over SSL this should output something like:
object(stdClass)#116 (2) { ["Variable_name"]=> string(10) "Ssl_cipher" ["Value"]=> string(10) "AES256-SHA" }
If you are NOT connected over SSL this should output something like:
object(stdClass)#116 (2) { ["Variable_name"]=> string(10) "Ssl_cipher" ["Value"]=> string(10) "" }
*/
?>
<сильный>4. Разверните и протестируйте соединение
Разверните ваши изменения и файл test.php в вашей установке WordPress и перезапустите веб-сервер по мере необходимости. Я использую apache, поэтому я запускаю
sudo apachectl restart
person
randalv
schedule
01.05.2015