- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
这是一个执行 HTTPS 请求的程序,开头有一些代码,我将在下面解释:
use 5.012;
use LWP::UserAgent;
use HTTP::Request::Common;
use Net::SSLeay;
BEGIN {
return unless $^O eq 'MSWin32'; # only needed on Windows
print STDERR "attempting to set HTTPS_CA_FILE to PEM file path\n";
require Mozilla::CA; # load module to determine PEM file path
my $pemfile = do {
my $path = $INC{ 'Mozilla/CA.pm' };
$path =~ s#\.pm$#/cacert.pem#;
$path;
};
if ( -f $pemfile ) {
$ENV{HTTPS_CA_FILE} = $pemfile;
print STDERR "HTTPS_CA_FILE set to $pemfile\n";
}
else {
warn "PEM file $pemfile missing";
}
} # ==========================================================================
$Net::SSLeay::trace = 2;
my $ua = LWP::UserAgent->new;
my $req = GET 'https://client.billsafe.de/';
my $rsp = $ua->request( $req );
say $rsp->is_success ? 'success' : 'failure';
say $rsp->status_line;
say '=================';
say substr $rsp->decoded_content, 0, 200;
say '=================';
# possibly relevant module versions
for ( qw/Net::SSLeay Crypt::SSLeay LWP::Protocol::https Mozilla::CA/ ) {
no strict 'refs';
say $_, "\t", ${"${_}::VERSION"}
}
开头的代码将环境变量 HTTPS_CA_FILE
设置为来自 Mozilla::CA
的 PEM 文件 cacert.pem
的值默认加载(我使用 procmon.exe
进行了检查,默认情况下该文件已完全读取)。
之所以进行这种明显荒谬的设置,是因为我们有一些 Windows 机器 (Windows Server 2008),当未设置环境变量时,SSL 设置失败并显示证书验证失败。为什么会这样,对我们来说是个谜。它在其他具有相同版本的 Net::SSLeay
、LWP::Protocol::https
和 Mozilla::CA
机器上运行良好.
我们的模块版本是:
现在的问题是:除了 cacert.pem
之外,是否还有其他地方从这个星座(Windows、Perl、Net::SSLeay)中加载根证书?如果有,它们是什么?我在哪里可以阅读它?
更新
OpenSSL 文档没有提到除普通文件和普通目录之外的任何证书存储:
用于打开系统证书存储的Windows C API函数如下:
我从 CVS 中检查了 OpenSSL HEAD。 CertOpenStore
函数确实在engines/e_capi.c
中使用。我没有进一步调查以找出用于访问相关服务器上 OpenSSL 版本中的商店的内容。
如果您进行网络搜索,您会发现有几个人想知道 OpenSSL 是否可以直接访问 Windows 证书存储,或者是否有 proposed to patch OpenSSL accordingly .还有这个 recent issue on the TortoiseSVN list (Windows Certificate Store / OpenSSL CAPI) .需要进行更多研究才能找出问题所在。
最佳答案
从 LWP 6.00 开始,您可以将 ssl_opts hashref 传递给 new,在其他选项中指定证书文件:
my $ua = LWP::UserAgent->new(
ssl_opts => {
verify_hostname => 1,
SSL_cert_file => $ssl_cert_file,
SSL_key_file => $ssl_key_file,
},
);
关于Windows/Perl/Net::SSLeay/OpenSSL:从哪些位置加载 CA 证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7662213/
cpan Net::SSLeay Running install for module 'Net::SSLeay' Running make for M/MI/MIKEM/Net-SSLeay-1.5
尝试读取 SSLeay 格式私钥时抛出 InvalidKeyException。 请在下面找到详细信息:-我有一个 SSLeay 格式的私钥。pem 格式以以下文件开头 -----开始 RSA 私钥-
我正在使用一个名为 Net::APNS::Persistent 的 perl 模块。它帮助我打开与苹果的 apns server 的持久连接。并通过 APNS 发送推送通知。该模块使用 Net::SS
我根本不是 Perl 人。但在某些情况下,我必须在新的 gentoo 服务器上部署 perl 脚本。脚本在其他几个由另一个人配置的服务器上运行良好。我自己安装了一台新服务器,某些软件包有不同的版本。作
这是安装的标准输出: CPAN Terminal> i Net::SSLeay Installing Net::SSLeay (1.58) Running [/usr/bin/perl /usr/b
我正在尝试使用 LWP 从远程主机下载文件。这是我的代码的简化版本,它重现了错误: #!/usr/local/bin/perl5.8 -w use strict; use LWP::UserAgent
我正在尝试创建一个脚本来查看我的 ~/ssl/certs 文件夹中的证书数据并向我显示颁发者信息。 它是用 perl 编写的,很容易说: $data = `/usr/bin/openssl x509
我有带有 ActiveState Perl“v5.10.0 为 MSWin32-x64-多线程构建的 64 位 Vista”,我正在尝试获取 Crypt::SSLeay随 libeay32.dll 和
我正在尝试让 WWW::Mechanize 使用 https 登录 Yahoo;但是,它需要使用 Crypt::SSLeay 来通过 https 发送。 Crypt::SSLeay 安装成功,open
我想使用 Perl 库 Net::SSLeay下载服务器的 SSL 证书,但无法弄清楚如何执行此操作。我想要完整证书,而不仅仅是通用名称和一些字段。 例如,我会给脚本参数 google.com,它会连
所以我正在尝试使用 SSL ergo Apache Openssl 和 SSLeay 安装 Apache。我用完了 Apache2,Openssl 知道我在安装 SSLeay 时遇到了困难。在所有命令
我试图通过 cpan 安装 Net::SSLeay 来安装 Email::Send::SMTP::TLS 但我收到以下错误。 cpan[5]> install Net::SSLeay Running
Using the Command Makefile.PL tyied to install but i am getting the below information how can fix th
我在我的 Perl 多线程版本(不是原始版本)中通过 cpanm 安装上述模块时遇到问题。我有 Ubuntu 16.04。尝试编译和测试此模块时,出现以下错误: /usr/bin/ld: imposs
这是一个执行 HTTPS 请求的程序,开头有一些代码,我将在下面解释: use 5.012; use LWP::UserAgent; use HTTP::Request::Common; use Ne
每当我推送更改时,我都会通过 GitHub 工作流程安装我的点文件。大约一周前,我的 CPAN 安装停止工作。这是今天的日志示例: 2020-07-16T20:19:35.8952930Z 35665
对于内部消息,我工作的公司使用 Slack .它允许与大量不同的软件和服务进行大量出色的集成。我正在制作自己的机器人,用于将 webhook 发送到 Slack。 我已设置好一切并开始工作,我有一个发
我的症状是我无法使用带有 LWP 的 HTTPS 请求的代理。这似乎是一个常见的问题,以及谷歌甚至here 上的提示都建议设置 HTTPS_PROXY 的解决方法Crypt::SSLeay 使用的环境
我正在尝试安装从 Snort 启动 PulledPork 所需的 Crypt::SSLeay。我正在使用 Perl 5.16-3 开发全新的 Red Hat Linux Enterprise 7 服务
我正在尝试使用 Carton 安装 Net::SSLeay。 安装失败并显示此消息 Configuring Net-SSLeay-1.90 Running Makefile.PL Do you wan
我是一名优秀的程序员,十分优秀!