As I Please

MTのいんすとーるの練習と、その他びぼうろく・・・

iOS13での(imap)サーバー証明書の作り直し

iOS13にアップデートしたところ、iPhoneのMailソフトで 自前の imap(dovecot)サーバにつながらなくなってしまった。 メッセージは「サーバーの識別情報を検証できません」。 全くノーケアだったけど原因は、「iOS 13 および macOS 10.15 における信頼済み証明書の要件」の中にある、
  • TLS サーバ証明書は、証明書の SAN (Subject Alternative Name) 拡張領域にサーバの DNS 名を記述する必要がある。証明書の CommonName の DNS 名は今後は信頼されなくなります。
  • TLS サーバ証明書には ExtendedKeyUsage (EKU) 拡張領域を必ず含め、ここに id-kp-serverAuth OID を指定する必要がある。
  • TLS サーバ証明書の有効期間は 825 日以下である (証明書の NotBefore フィールドと NotAfter フィールドで明記)。
あたりか?CAの証明書とsignについてはすでにsha256で行っていたので問題ないはず。cnをもう見ない、というのはうかつにも知らなかった。 SANへの対応について参照したのは、このページ。行った変更は、openssl.cnf において
  • default_days を 820(日)に
  • [req] セクションに"req_extensions = v3_req" を追加。
  • [ usr_cert ] セクションに "authorityKeyIdentifier=keyid,issuer:always","subjectAltName= @alt_names","extendedKeyUsage = critical,timeStamping,serverAuth,clientAuth,codeSigning,codeSigning,emailProtection" を追加。
  • [ v3_req ]セクションに、"subjectAltName =@alt_names","extendedKeyUsage = serverAuth,clientAuth,codeSigning,emailProtection" を追加。
  • [alt_names]セクションを新たに新設、ここに 'DNS.1= foo.baa.com","DNS.2 = *.foo.baa.com" などと記述。
これで、新たにサーバ証明書を作成し、dovecotの証明書として利用する。 とりあえずこれでエラーは出なくなり、以前通り接続できるようになった。 EKUのOIDとかも勝手に引っ張ってきてくれる。 httpd、sendmail のサーバー証明書、クライアント証明書も同じようにするかな・・・
追記: openssl.cnf の設定を https://mina2.sama.to/asiplease/2020/02/ios13-opensslcnf.htmlに書いた。

コメントする