はじめに
ふと、メールサーバーの証明書のことを思い出して確認してみたら、
なんと有効期限が1年以上前に切れている...。
でも、特に監視アラートも上がってないし、メールも普通に送受信できてる模様
よくわからんので調べて証明書を更新したところまでメモ。
なぜ期限切れでも動いていたのか
おそらくは、Postfixの設定 smtp_tls_security_level = may が鍵?
設定としては 「TLS暗号化できそうなら暗号化する」 なので厳密には証明書の期限を見ていないのかも。
期限切れの証明書でも暗号化のセッション自体は確立できていたため、
tcpdumpで覗いても、通信はしっかり暗号化されていました。
とはいえ、これは不健康な状態なので更新しましょうね。
Postfix証明書 更新手順メモ
1. 証明書の準備と結合
サーバー証明書と中間CA証明書を結合したファイルを作成する。
サーバー証明書と中間CA証明書を結合
$ cat (サーバー証明書) (中間CA証明書) > fullchain.cer
2.Postfixの設定変更
postconfコマンドで、新しい証明書ファイルと秘密鍵のパスを指定する。
結合した証明書ファイルのパスを指定
$ postconf -e 'smtpd_tls_cert_file = /path/to/fullchain.cer'
秘密鍵のパスを指定
$ postconf -e 'smtpd_tls_key_file = /path/to/private.key'
3. 構文チェックとサービスのリロード
構文チェック(何も表示されなければOK)
$ postfix check
問題がなければ設定をリロード
$ systemctl reload postfix
4. 最終確認
opensslコマンドで外部から接続テストを行い、証明書が正しく適用されているかを確認します。
$ openssl s_client -connect (自サーバーのホスト名):25 -starttls smtp
...
Certificate chain
 0 s:/C=JP/ST=Osaka/...(略)...
   v:NotAfter: Sep  1 14:59:00 2026 GMT   # ← 有効期限が新しくなっているか
 1 s:/C=JP/O=Cybertrust Japan Co., Ltd./...(略)... # ← 中間CAが見えているか
...
Verification: OK
---
...
Verify return code: 0 (ok)
Verify return code: 0 (ok) が表示されれば成功です。
おわり
証明書の更新する数が多すぎていつもモレがあって怖いのなんの。
ちゃんと期限管理してしっかり更新しましょうね、、
