gpt4 book ai didi

perl - 在 Ubuntu 12.04 上为 Perl 5.14.2 LWP 安装新的 ca 证书

转载 作者:太空宇宙 更新时间:2023-11-03 12:42:27 25 4
gpt4 key购买 nike

我在尝试使用 LWP 连接到特定 https 网站时遇到以下错误:

LWP::Protocol::https::Socket: SSL connect attempt failed with unknown errorerror:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed at /usr/local/share/perl/5.14.2/LWP/Protocol/http.pm line 51.

我尝试使用 wget 并得到:

ERROR: cannot verify [domain]'s certificate, issued by `/C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com, Inc./OU=http://certificates.godaddy.com/repository/CN=Go Daddy Secure Certification Authority/serialNumber=********':
Unable to locally verify the issuer's authority.

我四处搜索,发现我可能必须安装 godaddy root ca 证书。我想出了如何做到这一点(下载证书,放入/usr/share/ca-certificates 并运行 update-ca-certificates)。在这个过程中,我还学会了如何使用 openssl s_client。

现在证书已安装,wget 可以工作,但 LWP 仍然失败并出现相同的错误,openssl s_client 也是如此:

# openssl s_client -connect [domain]:443
CONNECTED(00000003)
depth=0 O = [domain], OU = Domain Control Validated, CN = [domain]
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 O = [domain], OU = Domain Control Validated, CN = [domain]
verify error:num=27:certificate not trusted
verify return:1
depth=0 O = [domain], OU = Domain Control Validated, CN = [domain]
verify error:num=21:unable to verify the first certificate
verify return:1

我不知道下一步该去哪里才能让它发挥作用。有什么建议吗?


编辑: 已解决这是一个简单的脚本,描述了在 mikew 的建议之后起作用的内容:

#!/usr/bin/perl
use LWP::UserAgent;
$URL="[domain]";
my $ua = LWP::UserAgent->new(ssl_opts => { SSL_ca_path=>'/etc/ssl/certs'});
my $response = $ua->get($URL);

最佳答案

要获得更具体的答案,我们需要知道您如何实例化 LWP 对象。

但您可能需要了解的是 LWP 构造函数中 ssl_optsSSL_ca_fileSSL_ca_path 选项。如果没有这些设置之一,它会假定 Mozilla_CA 是用于验证网站的 CA。

参见 LWP::Protocol::httpsLWP::UserAgent , ssl_opts 构造函数选项。

如果您使用的是 lwp-download 之类的东西,而不是自己实际实例化 LWP::UserAgent 对象,那么您需要设置 PERL_LWP_SSL_CA_FILE 环境变量以指向您的证书颁发机构或设置 PERL_LWP_SSL_CA_PATH 到您的 CA 路径。您也可以只设置这些而不是传递给 ssl_opts

如果你不是特别担心做所有这些验证并且喜欢冒险,你可以为 ssl_opts 设置 verify_hostname => 0 或者设置 PERL_LWP_VERIFY_HOSTNAME 环境变量为 0。

如文档中所述,LWP 5.837 及更早版本默认关闭 verify_hostname,而更高版本默认开启

关于perl - 在 Ubuntu 12.04 上为 Perl 5.14.2 LWP 安装新的 ca 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19389336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com