为什么通过 SSL 连接 PHPMyAdmin 时会出现 OpenSSL 错误?

为什么通过 SSL 连接 PHPMyAdmin 时会出现 OpenSSL 错误?

我在 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"
}

相关内容