我正在尝试通过IO::Socket::SSL at CSPAN的SSL示例进行工作。

我在示例中添加了SSL_ca_file:

$client->SSL_ca_file('ca-rsa-cert.pem')
        || die "failed to set CA certificate";

当我尝试执行脚本时,我得到:
Can't locate object method "SSL_ca_file" via package "IO::Socket::SSL"

有什么想法我可能做错了吗? Google并未提出有用的回应。

编辑:当我尝试使用以下Miller的建议时:
my $client = IO::Socket::SSL->new("example.com:8443",
        SSL_ca_file => 'ca-rsa-cert.pem')
        || warn "I encountered a problem: ".IO::Socket::SSL::errstr();

我收到一个错误:
Odd number of elements in hash assignment at /usr/share/perl5/IO/Socket/IP.pm line 328.
I encountered a problem: IO::Socket::IP configuration failed error:00000000:lib(0):func(0):reason(0) at ./TestCert.pl line 6.

编辑:按照Miller提供的文档,一切正常:
my $client = IO::Socket::SSL->new(
        PeerAddr => 'example.com',
        PeerPort => '8443',
        Proto    => 'tcp',
        SSL_ca_file => 'ca-rsa-cert.pem')
        || warn "I encountered a problem: ".IO::Socket::SSL::errstr();

系统是Debian Wheezy(7.3,x64)。 PERL是版本5.14.2。

最佳答案

SSL_ca_file new IO::Socket::SSL构造函数的可用选项。这不是可用的方法。

my $client = IO::Socket::SSL->new(
    SSL_ca_file => 'ca-rsa-cert.pem',
) or warn "I encountered a problem: ".IO::Socket::SSL::errstr();

我以前从未使用过此模块,但是文档指出,如果有帮助,该软件包的 example directory 中包含示例。

10-06 10:18