Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用https的Python请求-证书验证失败_Python_Https_Python Requests - Fatal编程技术网

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

使用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 然后

我试图在两个应用程序之间建立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)
但仍然有相同的结果

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

因此我设法找到了方法

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

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
希望这能帮助其他有同样问题的人