使用https证书验证的Python请求失败

2024-07-05 15:43:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在两个应用程序之间建立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

然后在我的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)

但仍然有相同的结果

我做错了什么? 可能是我生成的证书吗


Tags: httpsapi应用程序responsepostrequestspemrsa
1条回答
网友
1楼 · 发布于 2024-07-05 15:43:18

所以我设法想出了办法

不知何故,我肯定错过了一些步骤,但这就是我最终能够安装自签名证书的原因:

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

希望这能帮助其他有同样问题的人

相关问题 更多 >