SSLを有効にしているMySQLに接続時にERROR 2026 (HY000): SSL connection error: protocol version mismatch が出る
MySQL WorkBenchからMySQL5.7サーバーへ接続しようとすると「SSL connection error: protocol version mismatch」というエラーが出る。 また、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
<strong>Not After : Jan 25 04:25:22 2017 GMT</strong>
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
<strong>Not After : Nov 3 04:44:54 2071 GMT</strong>
Subject: C=JP, L=Default City, O=aa, CN=xxxxxxxxxxx.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
MySQLを再起動して接続したところ、正常に接続可能になった。