
Amazon AWS RDSのCA証明書が更新されることを受けて、MySQLのSSL証明書の有効期限の確認方法を検証した。
動作確認は以下のインスタンスで実施した。
- Amazon RDS (MariaDB, 10.1.31)
- Amazon Aurora (Aurora MySQL, 5.7.mysql_aurora.2.04.3)
opensslコマンドでは確認不可
MySQLはHTTPSなどと異なり、 openssl コマンドによる証明書の確認ができない。
$ openssl s_client -connect $DATABASE_URL:3306 -showcerts
CONNECTED(00000003)
140449419544216:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:794:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 305 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1571886451
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
SSL証明書の有効期限確認方法
証明書の有効期限確認方法はオフィシャルで案内されている通り。
SHOW STATUS LIKE 'Ssl_server_not%' コマンドにより証明書の有効期限を確認できる。
https://dev.mysql.com/doc/refman/5.7/en/creating-ssl-rsa-files-using-mysql.html
(2019/10/24時点で5.7は英語版のみ)
It is also possible to check SSL certificate expiration information using this SQL statement:
mysql> SHOW STATUS LIKE 'Ssl_server_not%'; +-----------------------+--------------------------+ | Variable_name | Value | +-----------------------+--------------------------+ | Ssl_server_not_after | Mar 5 22:03:06 2020 GMT | | Ssl_server_not_before | Feb 20 03:02:45 2019 GMT | +-----------------------+--------------------------+
SSL関連設定の確認方法
以下のコマンドでSSL証明書のパス等も確認できる。
mysql> SHOW VARIABLES LIKE 'ssl%'; +---------------+-----------------------------------------+ | Variable_name | Value | +---------------+-----------------------------------------+ | ssl_ca | /rdsdbdata/rds-metadata/ca-cert.pem | |... | | ssl_cert | /rdsdbdata/rds-metadata/server-cert.pem | |... | | ssl_key | /rdsdbdata/rds-metadata/server-key.pem | |... | +---------------+-----------------------------------------+
まとめ - MySQLのSSL証明書有効期限を確認する
SHOW STATUS LIKE 'Ssl_server_not%' コマンドにより、MySQLのSSL証明書の有効期限を確認できる。
将来的には、Prometheus mysqld_exporter などで監視できるようにしたい...