使用https的Python请求-证书验证失败
我试图在两个应用程序之间建立https连接:一个是nodejs中的api,另一个是python客户端应用程序 在阅读了https和证书之后,我创建了一个自签名证书。 为此,我使用了以下命令:使用https的Python请求-证书验证失败,python,https,python-requests,Python,Https,Python Requests,我试图在两个应用程序之间建立https连接:一个是nodejs中的api,另一个是python客户端应用程序 在阅读了https和证书之后,我创建了一个自签名证书。 为此,我使用了以下命令: openssl req -newkey rsa:2048 -nodes -keyout pvtkey.pem -x509 -days 365 -out domain.crt 这需要明确地拥有公钥: openssl rsa -in pvtkey.pem -pubout > pubkey.pem 然后
openssl req -newkey rsa:2048 -nodes -keyout pvtkey.pem -x509 -days 365 -out domain.crt
这需要明确地拥有公钥:
openssl rsa -in pvtkey.pem -pubout > pubkey.pem
然后在我的python代码中,我有以下行来发出请求:
response = requests.post(endpoint, cert=("home/pi/se24-title.crt", "/home/pi/pvtkey.pem"), headers=self.headers, json=req_payload)
当我运行测试代码时,出现以下错误:
Max retries exceeded with url: /api/title
(Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', 'certificate verify failed')])")))
之前,我还尝试将crt安装到受信任的证书上,并发出如下请求:
response = requests.post(endpoint, verify=True, headers=self.headers, json=req_payload)
但仍然有相同的结果
我做错了什么?
可能是我生成的证书吗?因此我设法找到了方法 不知何故,我肯定错过了一些步骤,但这就是我最终能够安装自签名证书的原因:
STEPS:
1. Create a self-signed certificate
> openssl req -newkey rsa:2048 -nodes -keyout pvtkey.pem -x509 -days 365 -out domain.crt
2. Create the public key from the private key
> openssl rsa -in pvtkey.pem -pubout > pubkey.pem
3. To install the certificate on raspbian:
sudo mkdir /usr/local/share/ca-certificates/extra
sudo cp domain.crt /usr/local/share/ca-certificates/extra/domain.crt
sudo update-ca-certificates
希望这能帮助其他有同样问题的人