Python 为什么在请求API调用中使用verify=True?

Python 为什么在请求API调用中使用verify=True?,python,ssl,python-requests,Python,Ssl,Python Requests,因此,在SSL验证的请求中,我们传递verify=True或verify='/path/to/cert。根据文档,传递verify=True意味着请求检查主机上的SSL证书。但是,如果在verify中为请求传递证书文件的路径,它会考虑用于验证请求的特定证书文件 那么首先传递verify=True有什么好处?因为,即使我通过了verify=False,它也能正常工作。早些时候,我认为它正在生成一个自签名证书,但我错了。任何帮助都将不胜感激。在讨论验证的不同值之前,首先需要了解该验证的内容。它是关于

因此,在SSL验证的
请求中,我们传递
verify=True
verify='/path/to/cert
。根据文档,传递
verify=True
意味着请求检查主机上的SSL证书。但是,如果在
verify
中为请求传递证书文件的路径,它会考虑用于验证请求的特定证书文件


那么首先传递
verify=True
有什么好处?因为,即使我通过了
verify=False
,它也能正常工作。早些时候,我认为它正在生成一个自签名证书,但我错了。任何帮助都将不胜感激。

在讨论
验证的不同值之前,首先需要了解该
验证的内容。它是关于验证服务器证书是否与预期证书匹配,这意味着存在到服务器的直接端到端受保护连接,并且中间没有人可以读取和修改流量。服务器验证(除其他外)基于表示受信任证书颁发机构(CA)的本地信任根证书:如果无法构建从服务器提供的叶证书到任何本地信任锚的链,则该证书不受信任。有关这方面的更多信息,请参阅

verify=True
则表示完成服务器验证以使用默认信任锚,这些锚通常与浏览器中使用的公共根证书相同
verify=file.pem
表示不使用默认信任锚,而只使用特定文件中给定的信任锚。这可以是单个CA证书,也可以是多个CA证书,但也可以是特定服务器所需的自签名证书。这两种选择通常都足够安全。但明确指定哪个CA或证书受
verify=file.pem
信任更具限制性,因此更安全

verify=False
表示根本不进行证书验证。这意味着中间的人不会被发现,中间的任何人都会嗅到并干扰交通。strong>这是完全不安全的,不应用于关键数据。。关键数据显然是密码或访问令牌之类的东西,但在许多情况下,即使公开访问的确切URL也被认为是关键的