

証明書の有効期限を確認する方法(openssl / MySQL)
この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。
証明書の有効期限を確認したくなる場面はいろいろあるが、対象によってコマンドが違うのでまとめておく。
ファイルとして持っている証明書を確認する
手元に証明書ファイル(.pem や .crt)がある場合。
openssl x509 -noout -dates -in example.crtnotBefore(有効開始日時)と notAfter(有効終了日時)が表示される。
稼働中のサーバーに対して確認する
証明書ファイルを持っていなくても、TLSで待ち受けているホストに対して直接確認できる。
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null | openssl x509 -noout -datess_client で証明書を取得して、そのまま x509 に渡している。-servername はSNI対応のサーバーで必要になる。
MySQLのSSLサーバー証明書を確認する
MySQLサーバー自体が使っているSSLサーバー証明書は、ファイルを探さなくてもSQLだけで確認できる。
SHOW STATUS LIKE 'Ssl_server_not%';Ssl_server_not_before: サーバー証明書の有効開始日時Ssl_server_not_after: サーバー証明書の有効終了日時
MySQLに接続できる状態であれば、証明書ファイルのパスを気にせずこれだけで期限が分かるのが楽。
使い分け
- 証明書ファイルが手元にある →
openssl x509 - 外部のサーバーの証明書を確認したい →
openssl s_client経由 - MySQLサーバー自身の証明書を確認したい →
SHOW STATUS
未確認
MySQLの Ssl_server_not% は、SSL接続を強制していない環境や非SSL接続の状態でどう返るか(空になるのかNULL相当になるのか)は実機未確認。