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

我在Apache 2.2上使用OpenSSL 1.0.1在Ubuntu 12上运行PHP 5.6.11。我已经成功地在Apache和MySQL中设置了SSL。

现在我想build立一个PHPMyAdmin,并通过SSL连接。 我真的不需要在本地主机上,但我没有其他方式来检查我的设置是否正常工作。 所以,而不是连接PMA到“本地主机”,我把它连接到我的域名“mx.testdomain.com”。 这将打开一个TCP连接,并不使用正常的套接字(我无法让SSL使用套接字)。

当我login我的PMA时,出现以下错误消息:

Error SELECT * FROM information_schema.CHARACTER_SETS MySQL reports: # 2006 - MySQL server has gone away 

当我停用我的PMAconfigurationSSL,一切工作正常,但我第一次login时得到以下“Backtrace错误”:

 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. 

当我检查我的URL与file_get_contents我有以下输出:

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