Let's Encrypt証明書を使ったメールサーバからの送受信がiOSでエラーになる場合の対処方法


はじめに

無料SSL証明書を発行するLet's Encryptで従来使用されていたDST Root CA X3証明書が2021年9月30日で使用できなくなり、これに伴い、この証明書で運用していた自身のメールサーバ(Postfix, Dovecot)につき、iOSでのメール送受信(SSL)ができなくなったので対応した。

結論

  1. Let's Encrypt証明書をいったん削除し、certbot コマンドに --preferred-chain "ISRG Root X1" オプションを追加して証明書を再作成する
  2. PostfixおよびDovecotで、証明書として cert.pem ではなく fullchain.pem を指定する

経緯

  • この記事のように、以前からLet's Encryptで使用されていたDST Root X3のルート証明書は2021年9月30日で使用できなくなることは以前からアナウンスされていた。
  • その後はISRG Root X1がルート証明書として利用されるが、かなり古いブラウザではこのルート証明書が使用されないことが懸念されていたものの、新しめのブラウザでは問題なく使用でき、自身の環境でもブラウザでの閲覧では問題が起きなかった。
  • しかしiOS(iPhone, iPad)では、Let's Encrypt証明書を使用しているメールサーバにつき送受信時にエラーが出るようになった。

上記1.の対応について

  • Let's Encryptのルート証明書としてISRG Root X1が優先されるように証明書を再作成する(Webサーバとして証明書を発行し、それをメールサーバに転用する運用をしています)

上記2.の対応について

  • Let's Encrypt証明書をメールサーバ(Postfix, Dovecot)で使用する場合、従来は証明書として cert.pem を指定しても運用できていたが、上記変更以来エラーになったため fullchain.pem に変更することで解決できた。

久しぶりにPostfixでのメールサーバ構築手順の記事をいろいろ調べたところ、Let's EncryptのSSL証明書としては「fullchain.pem を使用すること」とする記事が多かったので、自身がこのメールサーバを構築した際に参照した記事が古かったことが障害の原因と思われます。