我在 Linux Mint 上安装了带有“GOST 引擎的参考实现”的 OpenSSL 1.1.1。
我尝试使用 python-requests 连接 https-server:
import requests
api = 'https://api.stage.mdlp.crtp.ru'
hdr = {'Content-Type': 'application/json;charset=UTF-8',
'User-Agent' : 'my_system',
'Cache-Control': 'no-cache',
'Accept-Language': 'en',
'Authorization': 'token None'}
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS = 'GOST2012-GOST8912-GOST8912'
requests.packages.urllib3.contrib.pyopenssl.extract_from_urllib3()
cert_file = '/home/mi/soft/common/4.pem'
res = requests.get(api,headers = hdr,verify = cert_file)
结果是:
/home/mi/.local/lib/python2.7/site-packages/urllib3/connection.py:388: SubjectAltNameWarning: Certificate for api.stage.mdlp.crtp.ru has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/shazow/urllib3/issues/497 for details.)
SubjectAltNameWarning
Traceback (most recent call last):
File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/home/mi/soft/__main__.py", line 8, in
import test
File "/home/mi/soft/test.py", line 28, in
res = requests.get(api,headers = hdr,verify = cert_file)
File "/home/mi/.local/lib/python2.7/site-packages/requests/api.py", line 75, in get
return request('get', url, params=params, **kwargs)
File "/home/mi/.local/lib/python2.7/site-packages/requests/api.py", line 60, in request
return session.request(method=method, url=url, **kwargs)
File "/home/mi/.local/lib/python2.7/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/home/mi/.local/lib/python2.7/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/home/mi/.local/lib/python2.7/site-packages/requests/adapters.py", line 514, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='api.stage.mdlp.crtp.ru', port=443): Max retries exceeded with url: / (Caused by
SSLError(CertificateError("hostname 'api.stage.mdlp.crtp.ru' doesn't match u'api.stage.mdlp.crpt.ru'",),))
这个错误的原因是什么?我能做什么?