2015/01/14
FreeBSD 10 で運用しているfetchmailさんが
fetchmail: サーバ証明書検証エラー: unable to get local issuer certificate fetchmail: 証明パスが /C=BE/O=GlobalSign nv-sa/OU=Root CA/CN=GlobalSign Root CA で壊れています fetchmail: このエラーは、サーバが中間CAの証明書を提供しなかったことを意味し、fetchmail はどうすることもできません。詳しくは fetchmail に同梱されているドキュメント README.SSL-SERVER を参照してください。 fetchmail: これは、root CA が署名した証明書が 信頼される CA 証明書の保管場所にないか、証明書のあるディレクトリで c_rehash を走らせる必要があることを示しています。詳しくは、マニュアルページの --sslcertpath と -sslcertfile についての記述を参照してください。 fetchmail: サーバ証明書検証エラー: certificate not trusted fetchmail: 警告:接続は保護されていません、続けます。(--sslcertckの使用をお勧めします!)
と言ってきてログが我慢ならないほど溢れ始めたので対処したときの方法。
opensslインストール時に一緒に導入されるCA証明書を利用します。
パッケージの ca_root_nss で導入される奴ですね。ごめんなさい。
portsかpackagesのopensslを導入します。どうせなので新しいものにアップデートしたほうがいいでしょう。
導入できると、/etc/ssl がこんな感じに。
root@yakan:/root # ls -l /etc/ssl total 12 lrwxr-xr-x 1 root wheel 38 1月 14 05:59 cert.pem -> /usr/local/share/certs/ca-root-nss.crt -rw-r--r-- 1 root wheel 10926 2月 22 2014 openssl.cnf root@yakan:/root #
/etc/sslに移動し、rootでc_rehashを実行。必要かどうかちょっとわからん。いらないかもしれない。
root@yakan:/etc/ssl # c_rehash Doing /usr/local/openssl/certs root@yakan:/etc/ssl #
自分のホームディレクトリの適当なところに証明書のシンボリックリンクを張る。
$ cd $ ln -s /usr/local/share/certs/ca-root-nss.crt cert.pem
コマンドラインに証明書の位置を指定する。
$ fetchmail --sslcertfile ~/cert.pem
/etc/ssl/cert.pem を指定してもオーケー。
$ fetchmail --sslcertfile /etc/ssl/cert.pem
.fetchmailrc のユーザオプションに指定してもなぜか見てくれない(同じエラーが出る)
この辺はおいおい調べていく。