SSL:CERTIFICATE_VERIFY_FAILED证书验证失败
问题描述:
from lxml import html
import requests
url = "https://website.com/"
page = requests.get(url)
tree = html.fromstring(page.content)
page.content
- >SSLError:SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:748)SSL:CERTIFICATE_VERIFY_FAILED证书验证失败
我运行此脚本,但我得到这个错误。我该怎么做?
答
由于您的网址是“内部公司网址”(如在注释中规定),我猜它采用的是自签名证书,或由发行自签名的CA证书。
如果这是事实的话,你有两个选择:
(1)提供给您的企业CA的路径(包括中间证书的完整链条,如果有的话)requests.get()
call via verify
说法:
requests.get('https://website.lo', verify='/path/to/certfile')
或(2),完全禁用客户端证书验证(但提防所有的安全风险这需要,是一个简单的人在这方面的中间人攻击,等):
requests.get('https://website.lo', verify=False)
富勒完整性,相关verify
参数在requests.request()
文档描述:
verify -- (optional) Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use. Defaults to True.
答
使用下面的代码,而SSL
from lxml import html
import requests
url = "http://website.com/"
page = requests.get(url)
tree = html.fromstring(page.content)
page.content
+0
NSA会喜欢你的解决方案! – rweisse
[可能重复(https://*.com/questions/27835619/urllib-and- ssl-certificate-verify-failed-error)检查这个想法。 – ivan7707
如果你能指出“website.com”是一个真实的URL还是仅仅是一个例子,以及你采取了哪些步骤来确保它的证书是可信的,那么建议会更容易。您可能需要启用一些SSL跟踪。 –
这是一个内部公司网址 – Leo