中間CA証明書のインストールと設定
d:id:ZIGOROu:20080805:1217923189 の続き。
例えば先のエントリで書いたスクリプトで、https://wassr.jp/ にアクセスすると見事にオレオレ判定されちゃう訳ですが、これは単に中間CA証明書が手元にインストールされていないから起こる。
wassr の証明書を調べる、さらにCAをインストール
みたいに見れば分かる。CyberTrust が認証局のようです。google:CyberTrust 中間CA証明書 してみるとダウンロードできる場所が分かる。
からダウンロード出来るようだ。*1
テキスト版とやらをダウンロードする。今は手元の環境が cygwin なので /usr/ssl/certs にダウンロード。
$ cd /usr/ssl/certs $ wget http://www.cybertrust.ne.jp/SureServer/file/root_ca/PUBCA.txt -O cybertrust.pem $ ln -s cybertrust.pem `openssl x509 -in cybertrust.pem -hash -noout`.0
最後のは DSAS開発者の部屋:システム管理者の心得? 〜 OpenSSLコマンドで証明書をチェック(3) に詳しいのでそちらを参照の事。
もう一度試して見る
が上手く行かなかった。次のようにしたら上手くいった。
#!/usr/bin/perl use strict; use warnings; use Carp; use LWP::UserAgent; use Data::Dump qw(dump); $ENV{HTTPS_DEBUG} = 1; $ENV{HTTPS_CA_DIR} = '/usr/ssl/certs'; my $url = $ARGV[0]; my $ua = LWP::UserAgent->new; my $res = $ua->get($url); unless ($res->is_success) { croak $res->status_line; } elsif ($res->header("Client-SSL-Warning")) { croak "Bad certs"; } else { print "ok"; }
環境によって HTTPS_CA_DIR の値は変えないとダメ。
まとめ
OpenSSL ややこしい><