sendmail の maillog を見ていると verify=FAIL と出る場合がありますが、これは検証スルーすれば通信自体には、なんら問題はありません。
でも気持ちわるい。なので解消のため少し調べました。もともと関係性がいまいちわからなかったのでね、いい機会です。検証してみました。
最近の SSL/TLS 証明書は中間証明書が必ず存在するので、中間証明書を何処にセットするのか悩むところです。
他のサイトで fullcahin.pem や chain.pem と使い分けて CACertFile にセットしていたり、 ServerCertFile へ、順番としてはサーバ証明書、次に中間証明書と、chain 的にセットしていたのですが、外部からサーバに対して通信すると first どうのこうのと、SSL検証がエラーとなるのです。手元の環境ではうまくいかないのです。
- ServerKeyFile: 秘密鍵ファイルを指定
- ServerCertFile: サーバ証明書ファイルを指定
- CACertPath: このディレクトリへ、ca-root-nss.crt や、Mozilla 関連サイトなどで公開している ROOT 証明書(リスト)を保存(ファイル名はわかりやすければ何でも良し)し、中身を hash 値化したシンボリックリンクを作成。(これが読み込んでくれている気配がしない・・・)
- CACertFile: サーバ証明書に対する中間証明書と、ca-root-nss.crt やMozilla 関連サイトなどで公開しているルート証明書 を 1 ファイルにして指定 (CACertPath から探してくれない為、中間証明書とルート証明書をまとめてファイル保存してファイル名指定)
いろいろ調査した結果この方法でうまく verify=OK となる様になりました。
「サーバ→外部」「外部→サーバ」ともに通信が行える様になり、「サーバ→外部 (STARTTLS=client の時)」は verify=OK と変化します。