MySQL WorkBenchからMySQL5.7サーバーへ接続しようとすると「SSL connection error: protocol version mismatch」というエラーが出る。

また、mysqlコマンドで接続しても同様のエラーが出る。

mysql
# mysql -u username -p  -h hostname
ERROR 2026 (HY000): SSL connection error: protocol version mismatch

原因

調べても何が原因かわからなく、解決にかなり時間を要した。
今回のSSL connection error: protocol version mismatch の原因はこれだった。
・MySQLサーバーをSSL有効に設定している。
MySQLサーバーのSSL証明書の有効期限が切れている。

MySQL server cirtificate
# openssl x509 -text -noout -in /etc/mysql-ssl/server-cert.pem 
Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number: 179615470202049 (0xf94438df4c1)
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=JP, L=Default City, O=Default Company Ltd, CN=CAxxxxxxxxxxx.com
        Validity
            Not Before: May  1 04:25:22 2014 GMT
            Not After : Jan 25 04:25:22 2017 GMT
        Subject: C=JP, L=Default City, O=aa, CN=xxxxxxxxxxx.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption

解決

仕方がないので、サーバー証明書を再発行した。テスト用のサーバーなので有効期限を長めに発行してみた。

Issue MySQL server cirtificate 
# create csr 
openssl req -new -sha256 -days 20000 -key server-key.pem -out server-csr_20170130.csr 

# view csr
openssl req -noout -text -in server-csr_20170130.csr

# issue Certificate
openssl x509 -req -in server-csr_20170130.csr -days 20000 -CA ca-cert.pem -CAkey ca-key.pem -out server-cert.pem -set_serial 02

# view Server Certificate
openssl x509 -noout -text -in server-cert.pem
MySQL server cirtificate
# openssl x509 -text -noout -in /etc/mysql-ssl/server-cert.pem 
Certificate:
    Data:
        Version: 1 (0x0)
        Serial Number: 2 (0x2)
    Signature Algorithm: sha1WithRSAEncryption
        Issuer: C=JP, L=Default City, O=Default Company Ltd, CN=CAxxxxxxxxxxx.com
        Validity
            Not Before: Jan 30 04:44:54 2017 GMT
            Not After : Nov  3 04:44:54 2071 GMT
        Subject: C=JP, L=Default City, O=aa, CN=xxxxxxxxxxx.com
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)

MySQLを再起動して接続したところ、正常に接続可能になった。

参考

MySQL 5.6でSSL接続が有効にならない・クライアントからSSL接続できない。 - ah-2