Requests: SSL゚ラヌハンドシェむクが正しくありたせん

䜜成日 2016幎05月20日  Â·  33コメント  Â·  ゜ヌス: psf/requests

Python2.7.5を䜿甚するCeontOS7でラむブラリを䜿甚できたせんでした。 この゚ラヌが発生したした

File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 576, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/adapters.py", line 447, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'SSL3_GET_SERVER_CERTIFICATE', 'certificate verify failed')],)",)

PythonたたはSSLラむブラリの曎新は圹に立ちたせんでした。 CentOSずUbuntuでこの゚ラヌが発生したしたが、ArchLinuxではすべおが正垞に機胜したす。

Needs More Information

最も参考になるコメント

ああ、わかりたした、私たちはそこに着きたした。

api.smartsheet.comは、「クロス眲名蚌明曞」ず呌ばれるものを䜿甚しおTLSを提䟛したす。 これが䜿甚されたのは、 api.smartsheet.comのCAであるVerisignが元々1024ビットのルヌト蚌明曞を䜿甚しおいたためです。 これらは非掚奚になり、より匷力なルヌト蚌明曞に眮き換えられたしたが、䞀郚の叀いブラりザやシステムは曎新を受信しお​​いない可胜性があるため、 api.smartsheet.comなどのサむトは1024ビットルヌトによっお眲名されたルヌト蚌明曞を提䟛したす。

これは通垞は問題ではありたせん、_except_

  • certifiは匱い1024ビットルヌトを削陀したした
  • 1.0.2より叀いOpenSSLは、蚌明曞チェヌンの構築に倱敗するため、クロス眲名されたルヌトを正しく怜蚌できたせん。

これは2぀の方法で解決できたす。 最初の、より良いがより抜本的な方法は、OpenSSLを1.0.2以降にアップグレヌドするこずです。 これはCentosでは難しいこずです。恐れ入りたす。 あたり良くはありたせんが、より効果的な方法は、実行䞭のpython -c "import certifi; print certifi.old_where()"の出力を取埗しおから、 REQUESTS_CA_BUNDLE環境倉数を印刷されたパスに蚭定するこずです。

党おのコメント33件

リク゚ストのむンストヌル方法ずむンストヌルしたバヌゞョンを教えおください。

これはほが確実にSNIの問題であるため、ラむブラリのむンストヌル方法によっおは、オプションの䟝存関係を远加する必芁がある堎合がありたす。

リク゚ストは、pipを介しおsmartsheet-python-sdkの䟝存関係ずしおむンストヌルされたした。

pip show requests
---
Metadata-Version: 2.0
Name: requests
Version: 2.10.0
Summary: Python HTTP for Humans.
Home-page: http://python-requests.org
Author: Kenneth Reitz
Author-email: [email protected]
Installer: pip
License: Apache 2.0
Location: /usr/lib/python3.4/site-packages
Requires: 
Classifiers:
  Development Status :: 5 - Production/Stable
  Intended Audience :: Developers
  Natural Language :: English
  License :: OSI Approved :: Apache Software License
  Programming Language :: Python
  Programming Language :: Python :: 2.6
  Programming Language :: Python :: 2.7
  Programming Language :: Python :: 3
  Programming Language :: Python :: 3.3
  Programming Language :: Python :: 3.4
  Programming Language :: Python :: 3.5
  Programming Language :: Python :: Implementation :: CPython
  Programming Language :: Python :: Implementation :: PyPy

pip show smartsheet-python-sdk
---
Metadata-Version: 2.0
Name: smartsheet-python-sdk
Version: 1.0.1
Summary: Library that uses Python to connect to Smartsheet services (using API 2.0).
Home-page: http://smartsheet-platform.github.io/api-docs/
Author: Smartsheet
Author-email: [email protected]
Installer: pip
License: Apache-2.0
Location: /usr/lib/python3.4/site-packages
Requires: certifi, requests, six, python-dateutil, requests-toolbelt
Classifiers:
  Development Status :: 5 - Production/Stable
  Intended Audience :: Developers
  Natural Language :: English
  Operating System :: OS Independent
  License :: OSI Approved :: Apache Software License
  Programming Language :: Python
  Programming Language :: Python :: 2.7
  Programming Language :: Python :: 3.3
  Programming Language :: Python :: 3.4
  Programming Language :: Python :: 3.5
  Programming Language :: Python :: Implementation :: PyPy
  Programming Language :: Python :: Implementation :: CPython
  Topic :: Software Development :: Libraries :: Python Modules
  Topic :: Office/Business :: Financial :: Spreadsheet

pipでパッケヌゞを削陀し、yumからむンストヌルしおも圹に立ちたせん...

@pensnarikご䜿甚の環境でpip install -U requests[security]しおから、再詊行できたすか

ルカサ、あなたのアドバむスをありがずう、しかしそれは助けにはならなかった...

[mutex<strong i="6">@unica1</strong> parser]$ sudo pip install -U requests[security]
[sudo] password for mutex: 
Collecting requests[security]
  Using cached requests-2.10.0-py2.py3-none-any.whl
Collecting pyOpenSSL>=0.13 (from requests[security])
  Using cached pyOpenSSL-16.0.0-py2.py3-none-any.whl
Collecting ndg-httpsclient (from requests[security])
Requirement already up-to-date: pyasn1 in /usr/lib/python2.7/site-packages (from requests[security])
Collecting cryptography>=1.3 (from pyOpenSSL>=0.13->requests[security])
  Using cached cryptography-1.3.2.tar.gz
Requirement already up-to-date: six>=1.5.2 in /usr/lib/python2.7/site-packages (from pyOpenSSL>=0.13->requests[security])
Requirement already up-to-date: idna>=2.0 in /usr/lib/python2.7/site-packages (from cryptography>=1.3->pyOpenSSL>=0.13->requests[security])
Requirement already up-to-date: setuptools>=11.3 in /usr/lib/python2.7/site-packages (from cryptography>=1.3->pyOpenSSL>=0.13->requests[security])
Requirement already up-to-date: enum34 in /usr/lib/python2.7/site-packages (from cryptography>=1.3->pyOpenSSL>=0.13->requests[security])
Requirement already up-to-date: ipaddress in /usr/lib/python2.7/site-packages (from cryptography>=1.3->pyOpenSSL>=0.13->requests[security])
Requirement already up-to-date: cffi>=1.4.1 in /usr/lib64/python2.7/site-packages (from cryptography>=1.3->pyOpenSSL>=0.13->requests[security])
Requirement already up-to-date: pycparser in /usr/lib/python2.7/site-packages (from cffi>=1.4.1->cryptography>=1.3->pyOpenSSL>=0.13->requests[security])
Building wheels for collected packages: cryptography
  Running setup.py bdist_wheel for cryptography ... done
  Stored in directory: /root/.cache/pip/wheels/14/df/02/611097a49d7739151deb68d0172dff5ae7cba01b82769e56ef
Successfully built cryptography
Installing collected packages: cryptography, pyOpenSSL, ndg-httpsclient, requests
  Found existing installation: requests 2.6.0
    DEPRECATION: Uninstalling a distutils installed project (requests) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
    Uninstalling requests-2.6.0:
      Successfully uninstalled requests-2.6.0
Successfully installed cryptography-1.3.2 ndg-httpsclient-0.4.0 pyOpenSSL-16.0.0 requests-2.10.0
You are using pip version 8.1.0, however version 8.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
[mutex<strong i="7">@unica1</strong> parser]$ ./update_region_price.py 
Traceback (most recent call last):
  File "./update_region_price.py", line 129, in <module>
    sys.exit(app.run(sys.argv))
  File "./update_region_price.py", line 122, in run
    self.update_basic()
  File "./update_region_price.py", line 65, in update_basic
    sheet = self.sm.Sheets.get_sheet(self.sheet_id, page_size=5000)
  File "/usr/lib/python2.7/site-packages/smartsheet/sheets.py", line 460, in get_sheet
    response = self._base.request(prepped_request, expected, _op)
  File "/usr/lib/python2.7/site-packages/smartsheet/smartsheet.py", line 178, in request
    res = self.request_with_retry(prepped_request, operation)
  File "/usr/lib/python2.7/site-packages/smartsheet/smartsheet.py", line 242, in request_with_retry
    return self._request(prepped_request, operation)
  File "/usr/lib/python2.7/site-packages/smartsheet/smartsheet.py", line 208, in _request
    res = self._session.send(prepped_request, stream=stream)
  File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 585, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/adapters.py", line 477, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: ("bad handshake: Error([('SSL routines', 'SSL3_GET_SERVER_CERTIFICATE', 'certificate verify failed')],)",)

接続しおいるホストを教えおもらえたすか

もちろん、Lukasa https //api.smartsheet.com/2.0、smartsheet API甚のPythonラッパヌhttps://github.com/smartsheet-platform/smartsheet-python-sdkを䜿甚しおいたす。

たた、環境にcertifiむンストヌルされおいたすか

はい、ありたす

[mutex<strong i="6">@unica1</strong> parser]$ pip show certifi
---
Metadata-Version: 2.0
Name: certifi
Version: 2016.2.28
Summary: Python package for providing Mozilla's CA Bundle.
Home-page: http://certifi.io/
Author: Kenneth Reitz
Author-email: [email protected]
Installer: pip
License: ISC
Location: /usr/lib/python2.7/site-packages
Requires: 
Classifiers:
  Development Status :: 5 - Production/Stable
  Intended Audience :: Developers
  Natural Language :: English
  Programming Language :: Python
  Programming Language :: Python :: 2.5
  Programming Language :: Python :: 2.6
  Programming Language :: Python :: 2.7
  Programming Language :: Python :: 3.0
  Programming Language :: Python :: 3.1
  Programming Language :: Python :: 3.2
  Programming Language :: Python :: 3.3
  Programming Language :: Python :: 3.4

ああ、わかりたした、私たちはそこに着きたした。

api.smartsheet.comは、「クロス眲名蚌明曞」ず呌ばれるものを䜿甚しおTLSを提䟛したす。 これが䜿甚されたのは、 api.smartsheet.comのCAであるVerisignが元々1024ビットのルヌト蚌明曞を䜿甚しおいたためです。 これらは非掚奚になり、より匷力なルヌト蚌明曞に眮き換えられたしたが、䞀郚の叀いブラりザやシステムは曎新を受信しお​​いない可胜性があるため、 api.smartsheet.comなどのサむトは1024ビットルヌトによっお眲名されたルヌト蚌明曞を提䟛したす。

これは通垞は問題ではありたせん、_except_

  • certifiは匱い1024ビットルヌトを削陀したした
  • 1.0.2より叀いOpenSSLは、蚌明曞チェヌンの構築に倱敗するため、クロス眲名されたルヌトを正しく怜蚌できたせん。

これは2぀の方法で解決できたす。 最初の、より良いがより抜本的な方法は、OpenSSLを1.0.2以降にアップグレヌドするこずです。 これはCentosでは難しいこずです。恐れ入りたす。 あたり良くはありたせんが、より効果的な方法は、実行䞭のpython -c "import certifi; print certifi.old_where()"の出力を取埗しおから、 REQUESTS_CA_BUNDLE環境倉数を印刷されたパスに蚭定するこずです。

ああ、smartsheet SDKは、certifiを明瀺的に䜿甚するこずで、その環境倉数をオヌバヌラむドしたす。

新しい蚈画。 スマヌトシヌトをむンポヌトした盎埌、他のこずを行う前に、次の行を远加できたすか

import smartsheet.session
import certifi
smartsheet.session._TRUSTED_CERT_FILE = certifi.old_where()

それがうたくいけば圹立぀はずです。 このアプロヌチでは、環境倉数は必芁ありたせん。

残念ながら、/ usr / lib / python2.7 / site-packages / smartsheet / session.pyでこの行を倉曎しおも、機胜したせん。

_TRUSTED_CERT_FILE = certifi.where()

に

_TRUSTED_CERT_FILE = certifi.old_where()

この倉数をコヌドから倉曎しおも、圹に立ちたせん...

この時点で、これはリク゚ストのバグではなく、実際にはsmartsheetAPIラッパヌの問題であるず確信しおいたす。 これを圌らに報告しおみたしたか

うヌん。 そのコヌドが実行されおいるず確信しおいたすか printステヌトメントを䜿甚しお、䜿甚されおいるこずを確認できたすか

certifiを2015.11.20.1から2015.4.28にダりングレヌドするず、問題が修正されたす。

ubuntu @ ip-172-31-58-148 〜/ requests $ clear
ubuntu @ ip-172-31-58-148 〜/ requests $ python
Python 2.7.6デフォルト、2015幎6月22日、175813
[GCC 4.8.2] linux2侊
詳现に぀いおは、「help」、「copyright」、「credits」、たたは「license」ず入力しおください。

むンポヌトリク゚スト
requests.get 'https://logo.clearbit.com/beutifi.com'
requests / packages / urllib3 / util / ssl_.py318SNIMissingWarningHTTPS芁求が行われたしたが、TLSのSNISubject Name Indication拡匵機胜はこのプラットフォヌムでは䜿甚できたせん。 これにより、サヌバヌが誀ったTLS蚌明曞を提瀺し、怜蚌が倱敗する可胜性がありたす。 これを解決するために、Pythonの新しいバヌゞョンにアップグレヌドできたす。 詳现に぀いおは、 https//urllib3.readthedocs.org/en/latest/security.html#snimissingwarningを参照しお
SNIMissingWarning
requests / packages / urllib3 / util / ssl_.py122InsecurePlatformWarning真のSSLContextオブゞェクトは䜿甚できたせん。 これにより、urllib3がSSLを適切に構成できなくなり、特定のSSL接続が倱敗する可胜性がありたす。 これを解決するために、Pythonの新しいバヌゞョンにアップグレヌドできたす。 詳现に぀いおは、 https//urllib3.readthedocs.org/en/latest/security.html#insecureplatformwarningを参照しお
InsecurePlatformWarning
トレヌスバック最埌の最埌の呌び出し
ファむル ""、1行目、
ファむル "requests / api.py"、71行目、get
return request 'get'、url、params = params、* _kwargs
ファむル "requests / api.py"、57行目、リク゚スト
session.requestmethod = method、url = url、* _kwargsを返したす
ファむル "requests / sessions.py"、行477、リク゚スト
resp = self.sendprep、* _send_kwargs
ファむル "requests / sessions.py"、行587、送信
r = adapter.sendrequest、* _kwargs
ファむル "requests / adapters.py"、行491、送信
SSLErrore、request = requestを発生させたす
requests.exceptions.SSLError[Errno 1] _ssl.c510 error14077410 SSLルヌチンSSL23_GET_SERVER_HELLO sslv3アラヌトハンドシェむクの倱敗

これは、この問題に察する私の意芋です。 すべおのhttpsリク゚ストで発生するわけではありたせん。

@sProject新しい問題があるかどうかを刀断する前に、これらの譊告の䞡方を解決する必芁がありたす。 pipからリク゚ストを受け取った堎合は、 pip install pyopenssl pyasn1 ndg-httpsclientたす。 システムプロバむダヌからリク゚ストを受け取った堎合は、そこからこれら3぀のパッケヌゞをむンストヌルする必芁がありたす。

このバグは2か月以䞊前に解決されたようです。 この結論が間違っおいお、リク゚ストにただバグが芋぀かった堎合は、これを再開させおいただきたす。

リク゚ストに協力しおくれおありがずう

pygodaddyの䟋でも同じ䟋倖が発生したす

from pygodaddy import GoDaddyClient
client = GoDaddyClient()
if client.login(login[0],login[1]):
    print client.find_domains()
else: print 'falhou'


$ ./dynip.py 
Traceback (most recent call last):
  File "./dynip.py", line 8, in <module>
    if client.login(login[0],login[1]):
  File "/usr/lib/python2.7/site-packages/pygodaddy/client.py", line 99, in login
    r = self.session.get(self.default_url)
  File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 501, in get
    return self.request('GET', url, **kwargs)
  File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 488, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 609, in send
    r = adapter.send(request, **kwargs)
  File "/usr/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')],)",)

@pensnarikによっお提案されたcertifiのダりングレヌドは、それを修正したせん。 これはFedora24、Python2.7.12です。

# pip list
Babel (2.3.4)
beautifulsoup4 (4.5.1)
blinker (1.4)
certifi (2016.9.26)
cffi (1.9.1)
chardet (2.3.0)
click (6.6)
cryptography (1.5.3)
cssselect (0.9.2)
decorator (4.0.10)
django-htmlmin (0.9.1)
dnspython (1.14.0)
enum34 (1.1.6)
extras (1.0.0)
first (2.0.1)
fixtures (3.0.0)
Flask (0.11.1)
Flask-Babel (0.11.1)
Flask-Gravatar (0.4.2)
Flask-Login (0.3.2)
Flask-Mail (0.9.1)
Flask-Principal (0.4.0)
Flask-Security (1.7.5)
Flask-SQLAlchemy (2.1)
Flask-WTF (0.12)
gps (3.16)
gssapi (1.2.0)
html5lib (1.0b3)
idna (2.1)
importlib (1.0.4)
iniparse (0.4)
ipaclient (4.3.2)
ipaddress (1.0.17)
ipalib (4.3.2)
ipaplatform (4.3.2)
ipapython (4.3.2)
itsdangerous (0.24)
Jinja2 (2.8)
jwcrypto (0.3.2)
kitchen (1.2.4)
linecache2 (1.0.0)
lockfile (0.12.2)
lxml (3.6.4)
M2Crypto (0.25.1)
MarkupSafe (0.23)
munch (2.0.4)
ndg-httpsclient (0.4.2)
netaddr (0.7.18)
nose (1.3.7)
numpy (1.11.1)
passlib (1.6.5)
pbr (1.10.0)
pif (0.7.3)
Pillow (3.3.1)
pip (8.1.2)
pip-tools (1.7.0)
ply (3.9)
psutil (4.3.0)
psycopg2 (2.6.2)
pwquality (1.3.0)
pyasn1 (0.1.9)
pyasn1-modules (0.0.8)
pycparser (2.17)
pycrypto (2.6.1)
pycurl (7.43.0)
pygobject (3.20.1)
pygodaddy (0.2.2)
pygpgme (0.3)
pyliblzma (0.5.3)
pyOpenSSL (16.2.0)
pyrsistent (0.11.13)
PySocks (1.5.7)
python-dateutil (2.5.3)
python-fedora (0.8.0)
python-ldap (2.4.27)
python-mimeparse (1.5.2)
python-nss (1.0.0)
python-yubico (1.3.2)
pytz (2016.6.1)
pyusb (1.0.0)
pyxattr (0.5.5)
qrcode (5.3)
reportlab (3.3.0)
requests (2.12.1)
requests-file (1.4.1)
rpm-python (4.13.0)
scdate (1.10.9)
setuptools (28.8.0)
simplejson (3.8.2)
six (1.10.0)
slip (0.6.4)
speaklater (1.3)
SQLAlchemy (1.0.14)
sqlparse (0.2.1)
SSSDConfig (1.14.2)
Terminator (0.98)
testscenarios (0.5.0)
testtools (2.2.0)
tldextract (2.0.2)
traceback2 (1.4.0)
typing (3.5.2.2)
uniconvertor (2.0)
unittest2 (1.1.0)
urlgrabber (3.10.1)
urllib3 (1.16)
Werkzeug (0.11.11)
WTForms (2.1)
yum-metadata-parser (1.1.4)

GoDaddyは、䞍完党な蚌明曞チェヌンを提䟛しおいたす。 ぀たり、䞭間蚌明曞の1぀が欠萜しおおり、信頌チェヌンを構築できたせん。 䞍足しおいる䞭間蚌明曞をcertifiトラストストアに远加するか、GoDaddyに連絡しお混乱を敎理するように指瀺する必芁がありたす。

@Lukasa問題がリク゚ストたたは蚌明曞発行者にあるかどうかを確認するにはどうすればよいですか
Entrustによっお発行された蚌明曞が1぀あり、URLを参照するず、ブラりザヌはそれでたったく問題ありたせん。
しかし、リク゚ストを介しおそのURLにアクセスしようずするず、 [SSL: CERTIFICATE_VERIFY_FAILED]

完党なトレヌスバック

$ python main.py
Traceback (most recent call last):
  File "/Users/romandodin/venvs/nokdok/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 594, in urlopen
    chunked=chunked)
  File "/Users/romandodin/venvs/nokdok/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 350, in _make_request
    self._validate_conn(conn)
  File "/Users/romandodin/venvs/nokdok/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 835, in _validate_conn
    conn.connect()
  File "/Users/romandodin/venvs/nokdok/lib/python3.5/site-packages/requests/packages/urllib3/connection.py", line 323, in connect
    ssl_context=context)
  File "/Users/romandodin/venvs/nokdok/lib/python3.5/site-packages/requests/packages/urllib3/util/ssl_.py", line 324, in ssl_wrap_socket
    return context.wrap_socket(sock, server_hostname=server_hostname)
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 376, in wrap_socket
    _context=self)
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 747, in __init__
    self.do_handshake()
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 983, in do_handshake
    self._sslobj.do_handshake()
  File "/usr/local/Cellar/python3/3.5.1/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 628, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/romandodin/venvs/nokdok/lib/python3.5/site-packages/requests/adapters.py", line 423, in send
    timeout=timeout
  File "/Users/romandodin/venvs/nokdok/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 624, in urlopen
    raise SSLError(e)
requests.packages.urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "main.py", line 64, in <module>
    r = s.get('https://infoproducts.alcatel-lucent.com/cgi-bin/get_doc_list.pl?entry_id=1-0000000000662&srch_how=&srch_str=&release=&model=&category=&contype=&format=&sortby=&how=all_prod',
  File "/Users/romandodin/venvs/nokdok/lib/python3.5/site-packages/requests/sessions.py", line 501, in get
    return self.request('GET', url, **kwargs)
  File "/Users/romandodin/venvs/nokdok/lib/python3.5/site-packages/requests/sessions.py", line 488, in request
    resp = self.send(prep, **send_kwargs)
  File "/Users/romandodin/venvs/nokdok/lib/python3.5/site-packages/requests/sessions.py", line 609, in send
    r = adapter.send(request, **kwargs)
  File "/Users/romandodin/venvs/nokdok/lib/python3.5/site-packages/requests/adapters.py", line 497, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645)

むンストヌルされたパッケヌゞ

$ pip list
certifi (2016.9.26)
pip (9.0.1)
requests (2.12.4)
setuptools (32.3.1)
wheel (0.29.0)

蚌明曞の詳现

Subject infoproducts.alcatel-lucent.com
SAN infoproducts.alcatel-lucent.com
documentation.alcatel-lucent.com
Valid From Thu, 01 Dec 2016 13:15:08 GMT
Valid Until Sat, 01 Dec 2018 13:45:07 GMT
Issuer Entrust Certification Authority - L1K

問題はほが確実に発行者ではなく、サヌバヌにありたす。 サヌバヌに察しおopenssl s_client -connect "<your-host>:<your-port>" -showcerts -servername "<your-host>"を実行した堎合の出力を教えおください。

コマンドを正しく䜿甚したかどうかはわかりたせんが、それは䜕かです。

$ openssl s_client -connect "infoproducts.alcatel-lucent.com:443" -showcerts -servername "infoproducts.alcatel-lucent.com"
CONNECTED(00000003)
depth=0 /C=US/ST=Illinois/L=Naperville/O=Alcatel-Lucent USA Inc./CN=infoproducts.alcatel-lucent.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 /C=US/ST=Illinois/L=Naperville/O=Alcatel-Lucent USA Inc./CN=infoproducts.alcatel-lucent.com
verify error:num=27:certificate not trusted
verify return:1
depth=0 /C=US/ST=Illinois/L=Naperville/O=Alcatel-Lucent USA Inc./CN=infoproducts.alcatel-lucent.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:/C=US/ST=Illinois/L=Naperville/O=Alcatel-Lucent USA Inc./CN=infoproducts.alcatel-lucent.com
   i:/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
-----BEGIN CERTIFICATE-----
MIIFeDCCBGCgAwIBAgIRAO3KTvH+nKgrAAAAAFDanDYwDQYJKoZIhvcNAQELBQAw
gboxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQL
Ex9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2FsLXRlcm1zMTkwNwYDVQQLEzAoYykg
MjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxLjAs
BgNVBAMTJUVudHJ1c3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBMMUswHhcN
MTYxMjAxMTMxNTA4WhcNMTgxMjAxMTM0NTA3WjCBgTELMAkGA1UEBhMCVVMxETAP
BgNVBAgTCElsbGlub2lzMRMwEQYDVQQHEwpOYXBlcnZpbGxlMSAwHgYDVQQKExdB
bGNhdGVsLUx1Y2VudCBVU0EgSW5jLjEoMCYGA1UEAxMfaW5mb3Byb2R1Y3RzLmFs
Y2F0ZWwtbHVjZW50LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AK23xiJ/GCWNJa8Oa6SAYwT7QTmIJOXGrfLLZM9ZWDK81SVLm5xUAVRYaYmb3t/U
KpzeUoL+cJIa2xJGdbj50ehUTbB3SOXW7dxr15fuWahSChqaNkI/NClNAxy2Vho5
HxEtsjmuoJ0cNRcZLHZndLtWi27js3ivGxFxUcl7O3rGGj9yb+XXwJvEOsITPfZ/
gpURnHfAurZrw1+xpsArQVOF6+K6KkPnjGoCj0XCyU3LnWc6akcwwwV+HXcW8H5G
/CPvcm3DpI+45v/P2vVJ9+LiEJVHngVYK2QQ8fMDrvS2vs563I4PLnnRds0eOJph
LfHmn87oSW5jCP3RnsW0czECAwEAAaOCAa4wggGqMA4GA1UdDwEB/wQEAwIFoDAT
BgNVHSUEDDAKBggrBgEFBQcDATAzBgNVHR8ELDAqMCigJqAkhiJodHRwOi8vY3Js
LmVudHJ1c3QubmV0L2xldmVsMWsuY3JsMEsGA1UdIAREMEIwNgYKYIZIAYb6bAoB
BTAoMCYGCCsGAQUFBwIBFhpodHRwOi8vd3d3LmVudHJ1c3QubmV0L3JwYTAIBgZn
gQwBAgIwaAYIKwYBBQUHAQEEXDBaMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5l
bnRydXN0Lm5ldDAzBggrBgEFBQcwAoYnaHR0cDovL2FpYS5lbnRydXN0Lm5ldC9s
MWstY2hhaW4yNTYuY2VyMEwGA1UdEQRFMEOCH2luZm9wcm9kdWN0cy5hbGNhdGVs
LWx1Y2VudC5jb22CIGRvY3VtZW50YXRpb24uYWxjYXRlbC1sdWNlbnQuY29tMB8G
A1UdIwQYMBaAFIKicHTdvFM/z3vU981/p2DGCky/MB0GA1UdDgQWBBT9w+iH+fpG
UJ0IMw1vVpn+91hk6jAJBgNVHRMEAjAAMA0GCSqGSIb3DQEBCwUAA4IBAQAgOcDq
0YsihBWAxA4WFIGkdB/JdOKLRQ0Hvc7KStgtdkB1AqkUv7oBnDCHesazw4vyWbjv
w7dBTtB95jq1ZHX6eHyUDUo2xBmjnaeb2lSAdVV6j10sl7lMfRQh7ba1Im0ibhfe
7gvBn0tUlmdGqqvDqokzV4lVX74Z9nKKKr5D9e3vJsb5AvbDC/eYguBK9Oy8EDa2
ZcuPve3mB68lVy5UDg21RVZE072qC0FlYhNasZlMVUUg7tgDMlynQeeoxHe7Rcic
pHANQxJqtN8/bsE2mO/ryRZALyC7mWeDvG522ZXMaKslwTUr+jokpyUF7tS786Pi
n4zJ/KNZK2suVwcK
-----END CERTIFICATE-----
---
Server certificate
subject=/C=US/ST=Illinois/L=Naperville/O=Alcatel-Lucent USA Inc./CN=infoproducts.alcatel-lucent.com
issuer=/C=US/O=Entrust, Inc./OU=See www.entrust.net/legal-terms/OU=(c) 2012 Entrust, Inc. - for authorized use only/CN=Entrust Certification Authority - L1K
---
No client certificate CA names sent
---
SSL handshake has read 1556 bytes and written 466 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES256-SHA
    Session-ID: 48D3C9611E37C997182C4F123E21BCFD909D8D4BE887B44355866B80D44E1163
    Session-ID-ctx:
    Master-Key: 0A4A9E2A10E33EAA248541C39AC71F2F879310BAE141A4EA26F425D56C27099FB6D6572C2CCFC763FC743ECF99DABB5B
    Key-Arg   : None
    Start Time: 1483448892
    Timeout   : 300 (sec)
    Verify return code: 21 (unable to verify the first certificate)
---
closed

うん、サヌバヌが間違っおいる。

これはTLSで本圓に䞀般的な問題です。 TLS蚌明曞の怜蚌は、最初に、サヌバヌが信頌できる蚌明曞「ルヌト」ぞの秘密鍵「リヌフ」を持っおいるこずを蚌明できる蚌明曞から取埗する

ほずんどの堎合、このチェヌンは2ステップ以䞊の長さです。぀たり、リヌフはルヌトによっお眲名されおいたせんが、代わりにいわゆる䞭間蚌明曞によっお眲名されおいたす。 その䞭間䜓自䜓がルヌトによっお眲名されおいる堎合がありたすが、最終的にルヌトによっお眲名された䞭間䜓に到達するたで、他の䞭間䜓によっお眲名されおいる堎合もありたす。

たずえば、 https//python-hyper.orgの堎合、チェヌンは次のようになりたす。

  1. python-hyper.org、私が申請しお発行した「葉」
  2. Let'sEncryptプロゞェクトで䜿甚される䞭間蚌明曞であるLet'sEncrypt Authority X3
  3. DSTルヌトCAX3、私のWebブラりザヌおよび芁求が信頌するルヌト蚌明曞

あなたがアクセスしおいるサむトの正しいチェヌンは、次のようになりたす。

  1. infoproducts.alcatel-lucent.com、葉
  2. 委蚗認蚌局-リヌフを発行した䞭間蚌明曞であるL1K
  3. ルヌト認蚌局を委蚗する-䞭間䜓を発行したルヌト蚌明曞であるG2

ナヌスケヌスの堎合、Requestsは信頌できるルヌトずしお信頌デヌタベヌスに蚌明曞番号3で出荷されたす。 ただし、サヌバヌは蚌明曞番号1のみを送信しおいたす。蚌明曞2がないず、芁求は蚌明曞1から蚌明曞3に移動できず、サヌバヌはそれを送信したせん。 ほずんどのブラりザには、䞀般的に䜿甚される䞭間蚌明曞が付属しおいるか、それらのキャッシュを維持できたすが、リク゚ストではそれができないため、蚌明曞2を取埗する方法がありたせん。蚌明曞2がないず、怜蚌は倱敗するはずです。

適切に構成されたTLSサヌバヌは、リヌフ蚌明曞ず必芁なすべおの仲介者を送信したす。 これは、仲介者を芋たこずがなく、仲介者を動的にフェッチできないクラむアントが匕き続きチェヌンを怜蚌できるようにするためです。 比范ずしお、 python-hyper.orgに察しお実行するようなコマンドの出力を確認しおください。

% openssl s_client -connect python-hyper.org:443 -showcerts -servername "python-hyper.org"
CONNECTED(00000003)
depth=1 /C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
 0 s:/CN=python-hyper.org
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
-----BEGIN CERTIFICATE-----
MIIFBDCCA+ygAwIBAgISAwji03rFoFMPZnEC0rLc7jg3MA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNzAxMDExMjA4MDBaFw0x
NzA0MDExMjA4MDBaMBsxGTAXBgNVBAMTEHB5dGhvbi1oeXBlci5vcmcwggEiMA0G
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCjF6VMEOe2qHsdbAnYstunDCW5/fBx
yhzNAxSqZKA5qfATdvhDmiPFnHJkQgUkUeGDwbBwemxuUFUaGZKTJDRhlrymLSkN
hkcouBzs/mxDjNlKacokJBm3hpu+oxYohhxPIZBs8NM4olUPDSG68r6sd1EwR+Ia
Lw//nRsMpcrGNmYy+howiBvV3CbuYsbgB59bJ+5y6G2ZqeHMwzFZ+No1oQmBck9T
KAvCh5TteQphzcM9s9NZiB6Z9C0s+vBPKOc1uLssCI3hfr29Af203CX2xgyBjXH7
M4WS17o1zLgs3Q2V03gQ7AmhtgjuJ+2NRf/d6Bsmk8ZhGnyyf+qbY+G/AgMBAAGj
ggIRMIICDTAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsG
AQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFMD50AC8wul1eNKkGVxaAvXb
DSkDMB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMHAGCCsGAQUFBwEB
BGQwYjAvBggrBgEFBQcwAYYjaHR0cDovL29jc3AuaW50LXgzLmxldHNlbmNyeXB0
Lm9yZy8wLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5sZXRzZW5jcnlw
dC5vcmcvMBsGA1UdEQQUMBKCEHB5dGhvbi1oeXBlci5vcmcwgf4GA1UdIASB9jCB
8zAIBgZngQwBAgEwgeYGCysGAQQBgt8TAQEBMIHWMCYGCCsGAQUFBwIBFhpodHRw
Oi8vY3BzLmxldHNlbmNyeXB0Lm9yZzCBqwYIKwYBBQUHAgIwgZ4MgZtUaGlzIENl
cnRpZmljYXRlIG1heSBvbmx5IGJlIHJlbGllZCB1cG9uIGJ5IFJlbHlpbmcgUGFy
dGllcyBhbmQgb25seSBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIENlcnRpZmljYXRl
IFBvbGljeSBmb3VuZCBhdCBodHRwczovL2xldHNlbmNyeXB0Lm9yZy9yZXBvc2l0
b3J5LzANBgkqhkiG9w0BAQsFAAOCAQEAgX00tBHyz9GiDQjw+Id7sbT1lrtHrmtR
DB+kofnq9pkwIExDXT0bAZ14EnU6atiVqhF3j3KxvxIfbNvmSr7emmhPwt+KqOf7
/1m+gxg3ode9LIg6oLtVOfulecxkS4/Wj990O40vuRNdy4XT4PSNze8iuJtGALoS
U9kP8G/V6VnrdbTYhSIIUW9nm0XQcOUbvupFWtiwE8vZw4t0pQloeECdMuALgVO/
1xSu0kqZgidLOkFwei/xqItx7foREzVvq3kUHD1OAuPI1azHQjErQC3N12OmxmBU
3KDOsaJC2Uu8fqI/y1YOkO97hpsgFZX4BiQNaNhtyy7sscD/teVhWQ==
-----END CERTIFICATE-----
 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
   i:/O=Digital Signature Trust Co./CN=DST Root CA X3
-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow
SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT
GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF
q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8
SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0
Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA
a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj
/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T
AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG
CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv
bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k
c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw
VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC
ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz
MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu
Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF
AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo
uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/
wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu
X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG
PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6
KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
-----END CERTIFICATE-----
---
Server certificate
subject=/CN=python-hyper.org
issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
---
No client certificate CA names sent
---
SSL handshake has read 2638 bytes and written 451 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES256-SHA
    Session-ID: BBDF2CA65B2142C1F0C416B28C4FDF8FD5118ED4D5FF8802789D0B54C6309469
    Session-ID-ctx: 
    Master-Key: BD9B8B97EC439248CC5849EBF4B2ED18E0A73472EB8D86FE6F038C4E6944AFD8A163D80D47A3A3B28A6237A44C1B31CE
    Key-Arg   : None
    Start Time: 1483447980
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

私の堎合、サヌバヌは2぀の蚌明曞を送信したしたが、あなたの堎合は1぀しか送信しなかったこずに泚意しおください。

これぱラヌです。 リヌフだけでなく、関連するすべおの仲介者を送信するようにサヌバヌを再構成しおください。

私がここにいる間、サヌバヌに察しおQualys SSL Labsを実行するず、この問題に぀いおも説明されおいるこずに泚意しおください。 =

あなたが䞎えたこの教育的な返事を@Lukasaに感謝したす これに問題を抱えお本圓に感謝し、申し蚳ありたせん。それは私のTLS-knowledge-gap =でした。ほずんどの堎合、ブラりザでは問題なく、リク゚ストでは機胜しなかったため、問題が発生したした。 しかし、今では根本的な原因が䜕であるかが私には明らかです。

この堎合の回避策䞭間蚌明曞を事前にダりンロヌドするはないず思いたすが、サヌバヌを再構成するにはどうすればよいですか ずりあえず怜蚌チェックはスキップしたす

@hellt謝眪する必芁はありたせん。これは非垞に明癜ではないこずであり、非垞によくある間違いなので、ここでは良い関係にありたす。 =

実際、回避策がありたす。 蚌明曞バンドルをverifyに枡しお、certifiのバンドルの䜿甚をオヌバヌラむドできたす。 このバンドルには、ルヌト蚌明曞に加えお、OpenSSLがチェヌンの構築に䜿甚できるようになる䞭間蚌明曞を含めるこずができたす。 その結果、あなたができるこずは、certifi蚌明曞チェヌン python -c 'import certifi; print(certifi.where())'実行するこずで芋぀けるこずができるファむルにありたすを取埗し、それをファむルシステム䞊の別の堎所にコピヌしおから、䞭間蚌明曞をに远加するこずです。そのファむルの終わり。䞭間䜓はPEM圢匏である必芁がありたす。その埌、新しい蚌明曞バンドルぞのパスをverify kwargに枡すず、すべおが機胜し始めたす。

ルカ、
このタむプの゚ラヌが発生した堎合はどうなりたすか。
pip install certifi
蚌明曞の収集
URLをフェッチできたせんでしたhttps://pypi.python.org/simple/certifi/ssl蚌明曞の確認に問題がありたした[Errno2]そのようなファむルたたはディレクトリはありたせん-スキップしたす
芁件certifiを満たすバヌゞョンが芋぀かりたせんでしたバヌゞョンから:)
certifiに䞀臎するディストリビュヌションが芋぀かりたせん

NS

PyPIからのTLS蚌明曞の怜蚌に問題があるようです。 ただし、その゚ラヌメッセヌゞは少し驚くべきものです。 それがどこから来おいるのか完党にはわかりたせんが、pipの構成方法たたはPythonのいずれかに問題があるこずを瀺唆しおいたす。 他のPythonパッケヌゞでも同様の゚ラヌが発生したすか

皆さんこんにちは、
組織のむントラネット内でPythonを䜿甚しおKerberos認蚌を実行しようずしおいたすが、この゚ラヌが発生したす。

むンポヌトリク゚スト
requests_kerberosからimportHTTPKerberosAuth
r = requests.get "https * * * * * "、auth = HTTPKerberosAuth

SSLError  "䞍正なハンドシェむク゚ラヌ[ 'SSLルヌチン'、 'ssl3_get_server_certificate'、 '蚌明曞の怜蚌に倱敗したした']、"、

Pythonの蚌明曞を远加する方法を知っおいる人はいたすか それはこれを解決するのに圹立ちたすか

@ ajitmuley5リク゚ストを䜿甚しおいる間、あなたのような質問はStackOverflowに属したす。 必芁な詳现を添えお、そこに投皿しおください。 叀くお閉じられた問題に぀いおの議論を始めるこずなく、喜んであなたを助けおくれる人々がいたす。

@ルカサありがずう sudo pip install-Uリク゚スト[セキュリティ]は私のために働いた。

おかげさたで、アむデアが浮かびたした

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡