我在 Apache 2.2 上运行 PHP 5.6.11,在 Ubuntu 12 上运行 OpenSSL 1.0.1。我已在 Apache 和 MySQL 中成功设置 SSL。
现在我想设置一个 PHPMyAdmin 并通过 SSL 连接它。我实际上不需要在本地主机上使用它,但我没有其他方法来检查我的设置是否正常工作。因此,我没有将 PMA 连接到“本地主机”,而是将其连接到我的域“mx.testdomain.com”。这会打开 TCP 连接,并且不使用普通套接字(我无法让 SSL 与套接字一起工作)。
当我登录 PMA 时,收到以下错误消息:
Error
SELECT * FROM information_schema.CHARACTER_SETS
MySQL reports:
# 2006 - MySQL server has gone away
当我在 PMA 配置中停用 SSL 时,一切正常,但第一次登录时出现以下“回溯错误”:
Warning in ./libraries/dbi/DBIMysqli.class.php#236 mysqli_select_db(): SSL operation failed with code 1.
OpenSSL Error messages: error:0607A082:digital envelope routines:EVP_CIPHER_CTX_set_key_length:invalid key length error:0607A082:digital envelope routines:EVP_CIPHER_CTX_set_key_length:invalid key length
我对 Apache 和 MySQL 使用相同的 SSL 证书。
当我运行此 PHP 命令时,它返回一个有效密码:
$link = mysql_connect("mx.testdomain.com","testadmin","testpassword",false,MYSQL_CLIENT_SSL)
or die(mysql_error());
$res = mysql_query("SHOW STATUS LIKE 'ssl_cipher';",$link);
print_r(mysql_fetch_row($res));
echo "Finished.";
输出:
Array (
[0] => Ssl_cipher
[1] => AES256-SHA ) Finished.
当我使用 file_get_contents 检查我的 URL 时,我有以下输出:
array(4) {
["protocol"]=> string(7) "TLSv1.2"
["cipher_name"]=> string(25) "DHE-RSA-AES256-GCM-SHA384"
["cipher_bits"]=> int(256)
["cipher_version"]=> string(11) "TLSv1/SSLv3"
}