【发布时间】:2019-05-25 05:40:04
【问题描述】:
我在 Windows Server 2012 R2 [WSUS Server - 10.66.194.98] [Dec15.cer] 中生成了自签名证书,并在所有“WSUS 管理”网站中启用了 SSL。现在我想在 python 代码中使用它来与服务器联系。
我遇到了以下错误
错误:主机无法访问 [HTTPSConnectionPool(host='10.66.194.98', port=8531):最大重试次数超出了 url:/ApiRemoting30/WebService.asmx(由 SSLError(SSLError(1, '[SSL: CERTIFICATE_VERIFY_FAILED) 引起] 证书验证失败 (_ssl.c:833)'),))]
这是我尝试过的。
wsusutil.exe configuressl 10.66.194.98
然后我将 Dec15.cer 复制到 python 根目录。并运行以下代码
from requests import Session
from requests_ntlm import HttpNtlmAuth
user = 'administrator'
password = '******'
session = Session()
session.cert = session.verify = 'Dec15.cer'
# session.verify = False
session.auth = HttpNtlmAuth(user, password)
print(session.get("https://10.66.194.98:8531/ApiRemoting30",
verify=session.verify,
cert=session.cert))
【问题讨论】:
-
cert参数用于客户端证书(也需要匹配的私钥),而不用于 CA 证书。此外,verify中给出的值必须是 CA 证书(或多个 CA 证书),并且不清楚您的Dec15.cer实际包含什么。一个简单的叶子证书是行不通的。 -
注意
verify和cert之间存在差异。 docs.python-requests.org/en/master/user/advanced/… -
@SteffenUllrich Dec15.cer 实际上是我从 IIS 生成并与 WSUS 管理网站绑定的自签名证书。我简单地将证书保存到 cer 文件并复制到 python build。似乎python没有兑现证书。
-
@kcorlidy 谢谢。想知道如何在python中使用IIS生成的自签名证书。
-
@AlenNishabu:目前还不清楚
Dec15.cer实际包含什么。我建议实际提供文件(证书仅包含公共数据,不包含私钥),以便仔细查看。
标签: python-3.x ssl python-requests self-signed windows-update