【问题标题】:SSLError("bad handshake") when trying to access resources Custom Certificates and Requests尝试访问资源时出现 SSLError("bad handshake") 自定义证书和请求
【发布时间】:2017-11-09 17:50:40
【问题描述】:

我想使用 Zeep 编写 Web 服务以在 Python 中交换数据。我只能使用我的证书访问服务。我有一个 PFX 证书,但我将其转换为两个 .pem 文件。

我的代码:

from zeep import Client
from zeep.wsse.signature import Signature 
import requests
from requests import Session
key_filename ='/.files/cert.key.pem'
cert_filename = './files/cert.crt.pem'
session = Session()  
r = requests.get('https:...../PingWs?wsdl',
             cert=(cert_filename, key_filename)) 
print (r)

但我明白了

> raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='evidim-test.gov.si', port=443):
Max retries exceeded with url: /ws/test/PingWs?wsdl
(Caused by SSLError(SSLError("bad handshake: Error([('SSL routines',
'tls_process_server_certificate', 'certificate verify failed')],)",),))

【问题讨论】:

  • 嗨 lopow,欢迎来到 StackOverflow。您可能没有完整的证书集。 (根、链、crt、键)检查一下:stackoverflow.com/a/28667850/255523
  • 我已经使用 openss 转换了我的 .pfx 证书:pkcs12 -in certname.pfx -nocerts -out key.pem -nodes pkcs12 -in certname.pfx -nokeys -out cert.pem
  • 有人可以帮我吗?
  • @lopow 我面临着类似的问题。你能告诉我你是怎么解决的吗?
  • 检查您的时间和日期是否正确。如果不是,SSL 可能会出现问题

标签: python pfx zeep


【解决方案1】:

您必须通过将用于签署您尝试从系统设置连接到的远程服务器证书的 CA 证书列入白名单来解决此问题。但仅出于测试目的,您可以使用以下方法关闭验证:

r = requests.get('https:...../PingWs?wsdl',verify=False)

不要在生产中使用它。

希望对你有帮助!

【讨论】:

【解决方案2】:

此错误几乎可以肯定意味着远程端点未使用本地证书颁发机构存储中的证书进行签名。 你有两个选择:

  • 在请求使用的 CA 存储中安装证书。默认情况下,这是您的本地系统 CA 存储,至少可以由请求确定。

  • 配置一组不同的证书以用于请求会话对象。

举个例子:

import requests.sessions

photon_requests_session = requests.sessions.Session()
photon_requests_session.verify = "/etc/photon/cacerts.pem"

然后我需要确保服务器 CA 证书在 /etc/photon/cacerts.pem 中。 我这样使用:

r = photon_requests_session.get(url)

【讨论】:

  • 谢谢,但我不明白,howo 到远程端点没有签名。我需要我的应用程序连接到 ws。我的证书 *.pfx 已由远程应用程序注册。我可以通过 webbrowser 和我的 *.pfx 证书访问远程应用程序。 (远程应用程序有两个访问选项。第一个是通过网络浏览器,并向其中添加数据。第二个是通过 WS。证书始终相同,但是 *.pfx。这可能是个问题,ws 只接受 * .pfx 证书?
  • 根据您的 uerror,远程应用程序甚至使用 https 进行 Web 服务连接。因此,CA 证书很重要。遥控器无法区分 pfx 和 pem 文件。
  • ws 是在这种情况下使用的不好的缩写,顺便说一句。它可以代表网络套接字或网络服务。我猜是服务,因为请求与 Web 套接字不兼容。
  • 我该如何处理这个 CA 证书问题?
  • 谁能帮我解决这些问题?
猜你喜欢
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
  • 2021-10-12
  • 1970-01-01
相关资源
最近更新 更多