Estou executando o PHP 5.6.11 no Apache 2.2 com OpenSSL 1.0.1 no Ubuntu 12. Eu configurei com sucesso o SSL no Apache e no MySQL.
Agora, quero configurar um PHPMyAdmin e conectá-lo por meio de SSL. Eu realmente não preciso disso no localhost, mas eu não tenho outra maneira de verificar se a minha configuração está funcionando corretamente. Então, ao invés de conectar o PMA ao "localhost", eu o conectei ao meu domínio "mx.testdomain.com". Isso abre uma conexão TCP e não usa o soquete normal (não consegui obter SSL para trabalhar com o soquete).
Quando eu faço login no meu PMA, recebo a seguinte mensagem de erro:
Error
SELECT * FROM information_schema.CHARACTER_SETS
MySQL reports:
# 2006 - MySQL server has gone away
Quando eu desative SSL na configuração do meu PMA, tudo funciona bem, mas eu recebo os seguintes "Erros de Backtrace" na primeira vez que eu faço o login:
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
Eu uso o mesmo certificado SSL para o Apache e o MySQL.
Quando executo este comando PHP, ele retorna uma cifra válida:
$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.";
Saída:
Array (
[0] => Ssl_cipher
[1] => AES256-SHA ) Finished.
Quando verifico minha URL com file_get_contents, tenho a seguinte saída:
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"
}
Tags openssl php phpmyadmin linux