HaP*_*ran 4 python ssl-certificate urllib3
我收到了警告:
/.../local/lib/python2.7/site-packages/requests/packages/urllib3/connectionpool.py:734: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html
InsecureRequestWarning)
Run Code Online (Sandbox Code Playgroud)
我在读文件.
如果我知道自己在做什么,就像这个一样,我会看到很多关于如何禁用它的帖子.
但我仍然无法弄清楚错误的含义.我认为这意味着我错过了证书(因为它只发生在我的VPS上,而不是我的Mac上运行相同版本的脚本),但我不明白为什么我需要证书才能发出安全请求到第三方API.
非常感谢一个有用的摘要(或只是正确方向上的一点),所以我可以决定是否禁用它.我的直觉是我不应该禁用它,所以我想弄清楚如何正确解决问题.
我很高兴你没有简单地禁用警告.真是个好问题!您缺少对"信任链"如何运作的基本理解.这不是一种耻辱,遗憾的是很多人对此并不了解.但是,作为开发人员,您需要了解基础知识,真的,请!来吧,看看整个过程是如何运作的.搜索引擎是你的朋友.
简而言之,TLS加密旨在保证保密性,真实性和完整性.在安全社区常识(*):无证书验证你NONE这三个项目的,因为你很容易受到中间攻击人.也就是说,验证证书,或者您也可以停止使用HTTPS.这就是警告的内容.
更多上下文:此安全体系结构的一部分是远程主机声称拥有由信任链中较高的人签名的证书,即所谓的证书颁发机构(CA).客户端需要验证此CA 是否确实签署了相关证书.为了使此验证起作用,客户端需要具有许多CA的"密钥"的本地数据库.
我不明白为什么我需要证书来向第三方API发出安全请求
请阅读其他地方的详细信息.但是,为了完成这个答案,这是一个高级抽象,应该澄清为什么需要一些外部信息源:
您可以使用requests库而不是urllib3,它默认执行证书验证(并提供自己的CA数据库).
(*)未经验证的HTTPS连接可以比普通HTTP"更好",但这需要根据具体情况进行评估.