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 のサーバー証明書、クライアント証明書も同じようにするかな・・・
コメントする