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

2024-03-29

我在尝试使用 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

我不知道下一步该去哪里才能让这个工作正常进行。有什么建议么?


EDIT: SOLVED这是一个简单的脚本,描述了 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 对象。

但您可能需要了解的是SSL_ca_file and SSL_ca_path选项ssl_opts在 LWP 构造函数中。如果没有其中之一,它会假定 Mozilla_CA 是用于验证网站的 CA。

See LWP::协议::https https://metacpan.org/module/GAAS/LWP-Protocol-https-6.04/lib/LWP/Protocol/https.pm And LWP::用户代理 https://metacpan.org/module/LWP%3a%3aUserAgent#CONSTRUCTOR-METHODS, ssl_opts构造函数选项。

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

如果您不是特别担心进行所有这些验证并且喜欢危险地生活,您可以设置verify_hostname => 0 for ssl_opts or set PERL_LWP_VERIFY_HOSTNAME环境变量设置为0。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Ubuntu 12.04 上为 Perl 5.14.2 LWP 安装新的 ca 证书 的相关文章

随机推荐

  • 为什么“超时”不适用于管道?

    以下命令行调用timeout 这没有意义 只是出于测试原因 无法按预期工作 它会等待 10 秒 并且在 3 秒后不会停止命令的运行 为什么 timeout 3 ls sleep 10 您的命令正在执行的操作正在运行timeout 3 ls并
  • 在 Windows 上的 XAMPP 中哪里可以更改 lower_case_table_names=2 的值?

    我正在使用 Windows 7 和 XAMPP 我正在尝试导出数据库 在此过程中表名称将转换为小写 我搜索了很多 我知道我必须改变的值lower case table names from 0 to 2 但是我必须在哪里更改这个值 在哪个文
  • 将 TypeScript 网站从 GitHub 部署到 Azure

    我有一个 NET 网站 其中包含一些 TypeScript 文件 我尝试将其从 GitHub 部署为 Azure 网站 但收到与 TypeScript 相关的错误 在我看来 这可能与我使用最新版本 1 0 有关 而 kudu 版本只有 0
  • Google 端点和公共 Api 密钥

    要使用 Google 服务 您可以使用 OAuth 身份验证 或者 如果您不需要用户登录 则可以使用公共 api 密钥 将授权域定义为请求的来源 现在 我正在使用 google 端点编写自己的 API 并且我将允许用户通过公共 api 密钥
  • 使用sessionStorage有什么好处? [复制]

    这个问题在这里已经有答案了 只是想知道在存储要在 Javascript 轮播中使用的 HTML 内容时使用 HTML5 的 sessionStorage 的实际好处是什么 与性能有关吗 加载时间 带宽 是的 您将使用更少的带宽 这会提高性能
  • 使用 ggdendro 在树状图的片段下显示变量标签

    我的问题与安德里的有关answer https i stack imgur com JW0m1 png我之前的问题 我的问题是是否可以在树状图的相应段下显示变量标签和汽车标签 library ggplot2 library ggdendro
  • 扩展 Android 的默认 Gmail/电子邮件应用程序

    我想通过插入 ContentProvider 或使用意图过滤器来扩展 Android 平台的默认 Gmail 电子邮件应用程序 本质上 我希望能够扫描传入的电子邮件以查找将在我的 Android 应用程序中触发事件的特殊规则 如果自动扫描电
  • 立即终止无循环线程,无需中止或挂起

    我正在实现一个协议库 这里有一个简化的描述 main 函数中的主线程将始终检查网络流 在 tcpclient 内 上是否有某些数据可用 假设响应是收到的消息 线程是正在运行的线程 thread new Thread new ThreadSt
  • 在 Sparklyr 中创建虚拟变量?

    我正在尝试扩展我的一些 ML 管道 我喜欢 Sparklyr 打开的 rstudio spark 和 h2o 的组合 http spark rstudio com http spark rstudio com 我试图弄清楚的一件事是如何使用
  • 多个组的可反应聚合函数

    使用 Rreactable包中 我试图使用两个 groupBy 变量显示标记读数的百分比 在较低级别的分组中 这是计算正确的百分比 但在分组的第二 外部 级别上 它没有显示正确的百分比 这是数据 dat lt structure list
  • PHP:查询 MySQL 最快的方法是什么?因为 PDO 慢得令人痛苦

    我需要执行一个简单的查询 从字面上看 我需要执行的是 SELECT price sqft zipcode FROM homes WHERE home id X 当我使用 PHP 时PDO 我读过的是连接到 MySQL 数据库的推荐方法 简单
  • 如何通过id查找页面上的控件

    有没有一种简单的方法可以通过 id 在任何嵌套容器中 在 ASP NET 中查找控件 除了遍历整个控件树之外 像这个例子 TextBox tb new TextBox ID textboxId panel3 Controls Add tb
  • Spring Boot如何选择外部化的Spring属性文件

    我有这个配置需要用于 Spring Boot 应用程序 server port 8085 server servlet context path authserver data source spring jpa hibernate ddl
  • Windows 上的 Python 包:pip 还是本机安装程序?

    与使用打包安装程序 exe msi 相比 使用 pip 在 Windows 上安装 python 软件包的相对优点是什么 对于初学者来说 有些对我来说不起作用 MySQLdb 是 我的新规则 Try pip or easy install
  • NodeJS + Mysql 与 Docker Compose 2

    我正在尝试构建一个 docker compose 文件来在本地部署连接到 mysql 服务器的 NodeJS 应用程序 我已经尝试了所有方法 在 Stackoverflow 中阅读了大量教程和一些问题 但我不断收到 ECONNREFUSED
  • Apache .htaccess:如何在 Firefox 上用斜杠重写反斜杠?

    如何重写反斜杠 带斜线 在火狐浏览器上 Chrome IE Safari Opera 已构建浏览器用斜杠重写反斜杠 但 Firefox 3 6 13 回归404错误页面 Why Firefox returns 404 error page
  • 使用history.pushState()更新URL中的参数

    我在用history pushState在我的页面上进行 AJAX 调用后 将一些参数附加到当前页面 URL 现在 在基于用户操作的同一页面上 我想使用相同或附加的参数集再次更新页面 URL 所以我的代码如下所示 var pageUrl w
  • 如何使用有状态 LSTM 和 batch_size > 1 布置训练数据

    背景 我想在 Keras 中对 有状态 LSTM 进行小批量训练 我的输入训练数据位于一个大矩阵 X 中 其维度为 m x n 其中 m number of subsequences n number of time steps per s
  • Bokeh - 如何使 HoverTool 工具提示粘在点击点上?

    下面的代码来自于Jupyter笔记本 https nbviewer jupyter org github draperjames PythonRef blob master Bokeh 20HoverTool 20Custom 20Tool
  • 在 Ubuntu 12.04 上为 Perl 5.14.2 LWP 安装新的 ca 证书

    我在尝试使用 LWP 连接到特定 https 网站时收到以下错误 LWP Protocol https Socket SSL connect attempt failed with unknown errorerror 14090086 S