- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的公司为内部服务运营自己的内部 CA,我需要访问连接 Ansible AWX [python] 以与我们使用由该 CA 签署的证书的内部服务之一对话。基本上:
awx_task
,其中安装了 /etc/pki/ca-trust/source/anchors
,其中包含根 CA 证书。 [双重检查]update-ca-trust
运行,将 CA 证书捆绑到各种东西中,包括 /etc/pki/tls/certs/ca-bundle.crt
。 [双重检查]请求
应该 使用这个包。我在容器内或主机上找不到可以覆盖它的与 CA 相关的环境变量。但是,当我触发在 awx_task
中运行的 Ansible play 的测试运行时,我收到错误:
requests.exceptions.SSLError: HTTPSConnectionPool(host='vault.example.com', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLError(1, u'[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:618)'),))
在主机上我可以运行
import requests
requests.get("https://vault.example.com")
并获得 200
响应,如果我 strace
过程,我可以看到它正在读取 /etc/pki/tls/certs/ca-bundle。 crt
。但是从 awx_task
内部,我得到了与上面相同的 requests.exceptions.SSLError
。不幸的是,Docker 不允许我在容器内运行 strace,所以我看不到它试图读取的内容。
但是如果我将代码修改为:
import requests
requests.get("https://vault.example.com", verify="/etc/pki/tls/certs/ca-bundle.crt")
我从容器内部收到一个 200
响应。
我在这里错过了什么?
最佳答案
问题是@Will 指出的,当前版本的 Requests 使用完全独立于 OpenSSL 的 Certifi 包。 bundle PEM 实际上位于您的 Python 站点包目录中的某个位置。
无需修改您的代码,您可以使用环境变量覆盖它:
REQUESTS_CA_BUNDLE=/etc/pki/tls/certs/ca-bundle.crt
社论:这是执行 CA 信任的绝对荒谬的方式。如果您想减少系统信任,请在系统级别减少它。我真的厌倦了追逐分散在源代码树中的随机 PEM 包 [可能永远不会更新] 只是因为一些 #devoops 疯子认为他知道如何比实际操作更好地运行系统并 fork 他们的毫无戒心的系统的坏主意。
(ノಠ益ಠ)ノ彡┻━┻
关于Python 请求内部 CA 的 SSLError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56332517/
您好,我正在尝试通过执行从表存储帐户查询数据的 python 脚本来开始 Azure ML 算法。我用这个来做: entities_Azure=table_session.query_entities
我有一个运行 omniauth-facebook 和 omniauth-twitter 的 Rails 4 应用程序,但所有登录尝试都会遇到 Faraday::SSLError -- SSL_conn
我在 python 中使用一个包,我试图通过简单的打印访问方法我想出了这个错误 ConnectionError: HTTPSConnectionPool(host='xxx.xxxxx.xxx', p
import sslcontext = ssl.create_default_context()context.load_cert_chain('cert.pem', 'key.pem') B
尝试使用 the SnapWrap library 时我遇到过这个错误: File "/usr/local/lib/python2.7/dist-packages/requests-2.7.0-p
我正在编写一个涉及 CAS、jspring 安全检查、重定向等的简单脚本。我想使用 Kenneth Reitz 的 python 请求,因为它很棒!但是,CAS 需要通过 SSL 进行验证,所以我必须
我有一个带有 letsencrypt 证书的 python3 django 网站 一切正常,除了使用 python 请求到本地地址: response = requests.post('http://
我正在编写一个涉及 CAS、jspring 安全检查、重定向等的简单脚本。我想使用 Kenneth Reitz 的 python 请求,因为它很棒!但是,CAS 需要通过 SSL 进行验证,所以我必须
尝试使用 Requests session 发出简单的获取请求,但我不断收到特定站点的 SSLerror。我认为问题可能出在网站上(我使用 https://www.ssllabs.com 进行了扫描,
我正在尝试通过 python 向 iPhone 发送推送通知,如 here 所述但我收到以下错误: Traceback (most recent call last): File "", line
我正在编写一个涉及 CAS、jspring 安全检查、重定向等的简单脚本。我想使用 Kenneth Reitz 的 python 请求,因为它是一项很棒的工作!但是,CAS 需要通过 SSL 进行验证
这是我检查链接的功能。但是当链接是假的时它会抛出一个错误。例如,它适用于 twitter.com 但不适用于 twitt.com。 class Quality_Check: def check
我正在分析加密货币市场数据并使用某些交易所的公共(public) API。该程序每隔几秒发出一次 HTTPS 请求。奇怪的是,它恰好发出了 336 个请求,而在 337 个请求上它总是失败: /.rb
我正在尝试开始使用 PRAW,但在使用 login() 时遇到问题。 我有以下代码: import praw r = praw.Reddit('This is a test bot') r.login
我想使用从服务器生成的证书从我的客户端向服务器进行身份验证。我有一个 server-ca.crt,下面是正在运行的 CURL 命令。如何使用 python 请求模块发送类似的请求。 $ curl -X
我正在使用带有以下代码的 authlib: session = OAuth2Session(client_id, client_secret) token = session.fetch_access
我想使用从服务器生成的证书从我的客户端向服务器进行身份验证。我有一个 server-ca.crt,下面是正在运行的 CURL 命令。如何使用 python 请求模块发送类似的请求。 $ curl -X
当我尝试执行“conda update conda”时,我遇到了这个错误: 请你帮帮我! 最佳答案 如果您在防火墙或代理后面,您可能必须在您的 condarc 中将 ssl_verify 设置为 fa
我有包含 4 行的 fiddle.py import requests url = "https://randomuser.me/api/" locations = requests.get(url,
我不能在 Python 中使用不同的代理。 我的代码: import requests proxies = { "https":'https://154.16.202.22:3128',
我是一名优秀的程序员,十分优秀!