libwww-perl 裡的 LWP::UserAgent 可以處理 HTTPS,並利用 CA 驗證 public key 是否簽過。在 FreeBSD 下安裝 ca_root_nss 後可以在 /usr/local/share/certs/ 下看到檔案,於是可以這樣用:
#!/usr/bin/env perl
use strict;
use warnings;
use LWP::UserAgent;
INIT {
my $ua = LWP::UserAgent->new;
$ua->ssl_opts(SSL_ca_file =>
'/usr/local/share/certs/ca-root-nss.crt');
my $res = $ua->get('https://mail.google.com/mail/');
print $res->content;
}
在 Debian 或是 Ubuntu 下則是透過 ca-certificates 裝到 /etc/ssl/certs/ 下,並且分成很多檔案,這時候本來的 ssl_opts 就要改成 SSL_ca_path => '/etc/ssl/certs/';。
PS:FreeBSD 上因為是單檔,依照 SSL_CTX_load_verify_locations(3) 這邊的說明,沒辦法用 CApath…





