使用python对https站点做请求,报证书错误怎么解决!

发布于 2024-08-26  118 次阅读


在这个面试题中,引诱我们回答的应该是verify=False,不过这种普遍都是用于测试的情况下,但在正式的项目中都不会使用这种方式。所以,我们使用的的自签名的证书或不受广泛信任CA签发证书时,我们可以使用下列代码来手动的指定!

import requests
#确保AC证书文件
cerrt_file ="yourpath/certifcate.pem"
rsponse = requests.get("https://xxx.com",
verify=cert_file}
pirnt(response.text)

不过,如果服务器还使用了双向客户端身份验证,除了指定的CA证书,还需要指定私钥文件,如下:

import requests
#客户端证书和私钥文件的路径
cert_file = 'yourpath/certificate.pem'
client_cert = (yourpath/client_cert.pem',
'yourpath/client_private_key.pem')
response = requests.get ('https://xxx.com',
verify=cert_file, cert=client_cert)
print(response.text)

在第二种情况下!当你通过下列手段确认了网站的ssl证书的完整有效,python的requests库会自动处理ssl证书验证,无需做任何

openssl s_client -connetc xxx.com:443

如何只记得verify=False,其实这样做也没错,但可能在最后会出现tls2.0的认证过程或者证书颁发的过程。