当前位置: 首页 > 面试题库 >

Python请求-如何使用系统ca证书(debian / ubuntu)?

怀德馨
2023-03-14
问题内容

我已经在debian’s中安装了一个自签名的root ca cert/usr/share/ca- certificates/local并使用安装了它们sudo dpkg-reconfigure ca-certificates。在这一点上true | gnutls-cli mysite.local很高兴,也true | openssl s_client -connect mysite.local:443很高兴,但是python2和python3请求模块坚持认为对证书不满意。

python2:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/html" target="_blank">python2.7/site-packages/requests/api.py", line 70, in get
    return request('get', url, params=params, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 56, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 488, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 609, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/lib/python2.7/site-packages/requests/adapters.py", line 497, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)",)

python3

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/bin/python3.5/site-packages/requests/api.py", line 70, in get
    return request('get', url, params=params, **kwargs)
  File "/usr/local/bin/python3.5/site-packages/requests/api.py", line 56, in request
    return session.request(method=method, url=url, **kwargs)
  File "/usr/local/bin/python3.5/site-packages/requests/sessions.py", line 488, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/local/bin/python3.5/site-packages/requests/sessions.py", line 609, in send
    r = adapter.send(request, **kwargs)
  File "/usr/local/bin/python3.5/site-packages/requests/adapters.py", line 497, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)",)

为什么python会忽略系统ca-certificates捆绑包,以及如何集成它?


问题答案:

从http://codingdict.com/questions/664

为了使python请求使用系统ca-certificates捆绑包,需要告知它在其自己的嵌入式捆绑包上使用

export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt

请求将其捆绑包嵌入此处,以供参考:

/usr/local/lib/python2.7/site-packages/requests/cacert.pem
/usr/lib/python3/dist-packages/requests/cacert.pem

或在较新版本中,使用其他软件包从以下位置获取证书:https :
//github.com/certifi/python-certifi

要验证从哪个文件证书加载,可以尝试:

Python 3.8.5 (default, Jul 28 2020, 12:59:40) 
>>> import certifi
>>> certifi.where()
'/etc/ssl/certs/ca-certificates.crt'


 类似资料:
  • 我已经将一个自签名的根ca证书安装到debian的中,并使用安装它们。此时,true|gnutls-climysite.local感到高兴,true|openssls_client连接mysite.local:443感到高兴,但是python2和python3请求模块坚持认为它对证书不满意。 蟒蛇2: 蟒蛇3

  • 在Android上安装系统CA证书 从Android 7开始,除非将应用程序配置为使用用户证书,否则它们将忽略用户证书。由于大多数应用程序未明确选择使用用户证书,因此我们需要将mitmproxy CA证书放置在系统证书存储中,以避免不得不打补丁我们要监视的每个应用程序。 请注意,应用程序可以决定忽略系统证书存储,并维护自己的CA证书。在这种情况下,您必须修补该应用程序。 1.先决条件 来自Andr

  • 这类似于将PEM导入Java密钥存储。但问题的答案是使用OpenSSL进行转换,并使用工具将其导入文件系统上的密钥存储。 我试图使用一个格式良好的X509证书作为信任锚: 当我试图运行该程序时,我得到一个错误: 我还尝试了

  • 问题内容: 我需要在公司Intranet上使用Curtom根证书,并将其加载到Mac OS TrustStore(KeyChain)中,才能解决所有浏览器和GUI应用程序的问题。 似乎它甚至可以与Mac OS X附带的版本一起使用,但 不适用于python ,甚至 不适 用于Mac OS 10.12 Sierra(Python 2.7.10)附带的版本。 不过,似乎我会受到: 我该如何解决? 因为

  • 我正尝试仅使用.NET代码创建证书请求,并将该请求提交给我们的前提Active Directory PKI证书颁发机构,然后取回证书。我有一个已经工作了几年的解决方案,但它使用了CERTCLILib和CERTENROLLLib,我希望摆脱这些依赖关系,并将此代码移植到.NET5。 然后将这些证书导入到Yubikey设备上。我们在Yubikey上生成密钥对,然后将公钥与CSR一起使用。 这里的问题使

  • 问题内容: 我有一台具有通过https运行的rest API的服务器。我想在我的应用程序中调用此rest api,该应用程序在不同的端口中运行,但是由于这是通过https进行的,因此 我有2个文件pulic_key.pem和private_key可用于验证证书。使用golang发送休假请求时如何验证证书?我正在发送休息请求。这就是我现在忽略证书的操作。 问题答案: 您需要将证书的CA添加到传输中,