designetwork

ネットワークを軸としたIT技術メモ

MySQL(RDS, Aurora)のSSL証明書有効期限を確認する

f:id:daichi703n:20191024140345p:plain

Amazon AWS RDSのCA証明書が更新されることを受けて、MySQLSSL証明書の有効期限の確認方法を検証した。

動作確認は以下のインスタンスで実施した。

opensslコマンドでは確認不可

MySQLHTTPSなどと異なり、 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  |
|...                                                      |
+---------------+-----------------------------------------+

まとめ - MySQLSSL証明書有効期限を確認する

SHOW STATUS LIKE 'Ssl_server_not%' コマンドにより、MySQLSSL証明書の有効期限を確認できる。

将来的には、Prometheus mysqld_exporter などで監視できるようにしたい...