無料のSSLサーバー証明書であるLet’s Encryptは、米国の非営利団体であるISRG(Internet Security Research Group)により運営されています。
当サイトでもLet’s Encrypt利用させていただいてSSLを構築していますが、インストールに関しては他のサイトを参考にして下さい。
snap版でLet’s Encryptをインストールすると自動更新のプログラムもインストールされ、90日になる前に自動更新されます(設定は必要)
さて、先日からメールソフトで自宅メールサーバーのSSL証明書の期限が切れる旨の表示が出ます。
調べてみるとHTTP(apache) のSSL証明書の更新は出来ているのに、メール(postfix,dovecot) のSSL証明鍵の更新ができていません。
そこで、手動で証明書の更新を–dry-runオプションを付けてシュミレーションしてみます。
root# certbot renew --dry-run Processing /etc/letsencrypt/renewal/mailxxxxxxxxx.conf ------------------------------------------------------- error: Could not bind TCP port 80 because it is already in use by another process on this system (such as a web server). Please stop the program in question and then try again. #TCP ポート 80 は、このシステム上の別のプロセス (Web サーバーなど) によってすでに使用されているため、バインドできませんでした。問題のプログラムを停止してから、もう一度試してくださいとのエラーメッセージでメールSSL証明書の更新が出来ません。 #tcp port:80で使っているサービスを確認します。 root# lsof -i tcp:80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME httpd 1248346 apache 4u IPv6 907497 0t0 TCP *:http (LISTEN) #apacheが tcp port:80を使っているのでapacheを停止して手動更新してみます。 root# systemctl stop httpd root# certbot renew --dry-run Congratulations, all simulated renewals succeeded: root# systemctl restart httpd #Congratulations, all simulated renewals succeeded:との事でapacheを停止すれば手動でSSL証明鍵の更新はできましたが、90日おきにこの作業をするのは面倒です。
エラーを出しているメールの自動更新configfile と自動更新できているwebサイト(apache) のconfigfileを見比べてみます。
エラーになるメールの自動更新configfile。 root# vi /etc/letsencrypt/renewal/mail.xxxxxx.com.conf [renewalparams] account = axxxxxxxxxxxxxxxxxx authenticator = standalone server = https://acme-v02.api.letsencrypt.org/directory key_type = ecdsa #自動更新出来ているwebサイトのconfigfile。 [renewalparams] account = abxxxxxxxxxxxxxxxx authenticator = apache installer = apache server = https://acme-v02.api.letsencrypt.org/directory key_type = rsa #メールの自動更新configfileでの authenticator = standalone は外部に接続しないで独立で動作させるとの意味ですかね?そこで、authenticator をwebサイトと同じ様に変更してみます。 #authenticator = standalone authenticator = apache
メールの自動更新configfileでの authenticatorをapacheに変更して、再度手動で証明書の更新を–dry-runオプションを付けてシュミレーションしてみます。
root# vi /etc/letsencrypt/renewal/mail.xxxxxx.com.conf [renewalparams] account = axxxxxxxxxxxxxxxxxx authenticator = apache server = https://acme-v02.api.letsencrypt.org/directory key_type = ecdsa root# certbot renew --dry-run Congratulations, all simulated renewals succeeded: #手動で証明書の更新が成功したので、自動更新プログラムでも更新できるはずです。