これまでは、.wlに、
(setq ssl-certificate-verification-policy 1)と書いていたけど、誤魔化しているようで嫌だったので証明書を取り込むことにした。
SSLのネゴシエーションのパケットをWiresharkでキャプチャしたら、
Protocol: TLSv1のレコードに証明書が二つ含まれていたので、それぞれバイナリで保存した。
Info: Certificate
保存した二つの証明書を、opensslコマンドでBase64エンコード
$ openssl base64 -in sakura-1.bin -e -out sakura-1.pem
$ openssl base64 -in sakura-2.bin -e -out sakura-2.pem
sakura-*.pemの最初と最後に
-----BEGIN CERTIFICATE-----
と
-----END CERTIFICATE-----
を追加した。
ちなみに、この証明書のフォーマットはX509形式で、Base64で符号化したものをPEMというらしい。
PEM以外にも符号化の種類によって、DERとかあるみたい。
この2つのPEMを'hash format'のディレクトリに置くべく、
$ cp sakura-1.pem /path/to/certdir/とやった。
$ cp sakura-1.pem /path/to/certdir/
$ c_rehash /path/to/certdir/
そのあと、
$ openssl s_client -host hostname.sakura.ne.jp -port 993 -verify 0 -CApath /path/to/certdirで
Verify return code: 0 (ok)となっている事を確認。
最後、wlからopensslを使うときの証明書ディレクトリを指定して完了。
(custom-set-variables
'(ssl-certificate-directory "/path/to/certdir/"))
2008/8/28 追記
証明書ディレクトリは
(custom-set-variables
'(ssl-certificate-directory "/path/to/certdir/"))
じゃなくて、
(setq ssl-certificate-directory "/path/to/certdir/")
って形で.wlにフルパスで定義した方が良さそう。