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...