Имах същия въпрос. За щастие някои други хора предложиха разумно решение тук: https://core.trac.wordpress.org/ticket/28625. От край до край, ето какво направих, за да накарам SSL да работи:
1. Добавете следното към файла wordpress wp-includes/wp-db.php. (с изключение на последните 2 реда, които са само за препратка към точката на вмъкване)
//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