先日適当にやってなんとか使えるようになっていたメールサーバの証明書が有効期限がすぎて、
iphoneでしつこく警告が表示されるようになったので証明書を更新したのだが、
その際にちょっと苦労したのでメモ。
まず、前提条件
・CAとメールサーバは同じサーバ。同じcn
・postfixとdovecotで使用する証明書は同じ
今回はcaの秘密鍵や証明書がどこにあるのが最新だかわからなくなってしまったので、
全部最初から作り直した。
やること。
1. caの秘密鍵生成
2. caの証明書作成(csrを発行して署名)
3. サーバの秘密鍵生成
4. サーバ証明書作成(csrを発行して署名)
postfixとdovecotの設定ファイルに証明書と秘密鍵の場所を設定する。
# grep smtpd_tls /etc/postfix/main.cf
smtpd_tls_cert_file = /etc/pki/tls/certs/server.crt
smtpd_tls_key_file = /etc/pki/tls/private/server.key
# grep tls /etc/dovecot/dovecot.conf
ssl_cert = </etc/pki/tls/certs/server.crt
ssl_key = </etc/pki/tls/private/server.key
ssl_ca = </etc/pki/tls/certs/ca.crt
# grep tls /etc/dovecot/conf.d/10-ssl.conf
ssl_cert = </etc/pki/tls/certs/server.crt
ssl_key = </etc/pki/tls/private/server.key
postfixやdovecotの設定パラメータやその書き方はよく変わる。
古い設定もしばらくは有効らしいがきっとそのうち使えなくなるので
なるべく最新にする。
ログを見ていると最新じゃないとかこの設定はいらないとか出ている。
サーバ秘密鍵は暗号化してしまうとダメときいたので暗号化しないようにした。
caで署名するときに秘密鍵や証明書を指定しないと設定ファイルの値を使うので、
設定ファイルを直すか、明示的に指定すること。
もしたまたま秘密鍵や証明書が存在していると、意図しないものを使ってしまうことになり、あとで正しい証明書として認識されないので注意。
わからなくなったら全部消してやり直すべし。
/var/log/maillog を見ていれば何が悪いかはだいたいわかる。
ca証明書をクライアントにインストールする。
私の場合iphoneでしか使わない。
iphoneの場合、pem形式のファイルをメールに添付して送ると開いたときにプロファイルとして保存されるので、それをインストールする。