Isso diz respeito à minha tentativa de usar um certificado do lado do cliente em uma conexão criptografada SSL para um servidor mysql.
Algumas noções básicas: O servidor é o Ubuntu 12.04 executando o mysql 14.14 Distrib 5.1.69. Client é MacOS 10.8.5 com o mysql Ver 14.14 Distrib 5.5.25a
Existem muitas maneiras de errar essa configuração, como testemunhado por muitos postando aqui e em outros lugares na web. Neste caso, parece que o lado do servidor está configurado corretamente, pois é possível usar um comando como
mysql --ssl-ca=CAcert.pem -u user -ppassword -h host.com -e '\s
para obter um relatório de que há uma cifra em uso.
Se, no entanto, eu adicionar um certificado e uma chave do lado do cliente, como
mysql --ssl-ca=CAcert.pem --ssl-cert=clientCert.pem --ssl-key=keyFile -u user -ppassword -h host.com -e '\s'
isto produz a mensagem de erro não informativa 'ERROR 2026 (HY000): Erro de conexão SSL: erro: 00000001: lib (0): func (0): reason (1)'. Não há nada no log de erros do servidor.
Verifiquei se o certificado do cliente pode ser verificado para a CA em uso com openssl verify-purpose sslclient -CAfile CAcert.pem clientCert.pem
que retorna ok.
Os nomes canônicos do CAcert.pem e clientCert.pem são distintos. O CAcert.pem, clientCert.pem e keyFile são todos legíveis pelo usuário (e até mesmo tornar o mundo da chave legível não ajuda).
Infelizmente, dado o protocolo usado pelo mysql entre o cliente e o servidor, não parece possível usar o cliente openssl para fazer qualquer depuração aqui.
Alguma sugestão sobre qual é o problema? Ou maneiras de obter mais informações de depuração no lado do cliente?