更新:原来我真正想要的是HTTPS_CA_DIR,因为我没有ca-bundle.crt。但HTTPS_CA_DIR = / usr / share / ca-certificates /做到了。我把答案标记为接受,因为它足够接近。
更新2:事实证明,HTTPS_CA_DIR和HTTPS_CA_FILE仅适用于如果您使用Net :: SSL作为底层SSL库。但LWP也与IO :: Socket :: SSL,它将忽略这些环境变量,并愉快地与任何服务器谈话,无论它提供什么证书。有更一般的解决方案吗?
更新3:不幸的是,解决方案仍然不完整。 Net :: SSL或IO :: Socket :: SSL都不会针对证书检查主机名。这意味着某人可以获取某些域的合法证书,然后假冒任何其他域,而无LWP抱怨。
解决方法
这可以由LWP :: UserAgent的新的ssl_opts选项控制。有关如何查找证书颁发机构证书的详细信息,请参阅此链接。但要小心,LWP :: UserAgent的工作方式,如果你提供一个ssl_opts哈希到构造函数,那么verify_hostname默认为0而不是1.(This bug在LWP 6.03中修复)为了安全,总是指定verify_hostname = > 1在您的ssl_opts。
所以使用LWP :: UserAgent 6;应足以使服务器证书验证。
原文地址:https://www.jb51.cc/Perl/173469.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。