如何在Python3中使用自签名证书

时间:2018-12-27 06:44:42

标签: python-3.x ssl python-requests self-signed windows-update

我已经在Windows Server 2012 R2 [WSUS Server-10.66.194.98] [Dec15.cer]中生成了自签名证书,并在所有“ WSUS管理”网站中启用了SSL。现在,我想在python代码中使用它来与服务器联系。

Dec15.cer

我遇到了以下错误

  

错误:无法访问主机[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))

1 个答案:

答案 0 :(得分:1)

有问题的Dec15.cer证书是自签名证书,但没有基本限制CA:true:

$ openssl x509 -text -in Dec15.cer 
...
    X509v3 extensions:
        X509v3 Key Usage: 
            Key Encipherment, Data Encipherment
        X509v3 Extended Key Usage: 
            TLS Web Server Authentication

但是,正如我在评论中已经说过的那样,在verify中赋予requests参数的证书必须是CA证书,即具有基本约束CA:true