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