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ã§ã¯ãã¹ãŠãæ£åžžã«æ©èœããŸãã
ãªã¯ãšã¹ãã®ã€ã³ã¹ããŒã«æ¹æ³ãšã€ã³ã¹ããŒã«ããããŒãžã§ã³ãæããŠãã ããã
ããã¯ã»ãŒç¢ºå®ã«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ãããã«ãŒããåé€ããŸããããã¯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ã®å Žåããã§ãŒã³ã¯æ¬¡ã®ããã«ãªããŸãã
ããªããã¢ã¯ã»ã¹ããŠãããµã€ãã®æ£ãããã§ãŒã³ã¯ã次ã®ããã«ãªããŸãã
ãŠãŒã¹ã±ãŒã¹ã®å Žåã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ãªã¯ãšã¹ã[ã»ãã¥ãªãã£]ã¯ç§ã®ããã«åããã
ãããããŸã§ãã¢ã€ãã¢ãæµ®ãã³ãŸããïŒ
æãåèã«ãªãã³ã¡ã³ã
ãããããããŸãããç§ãã¡ã¯ããã«çããŸããã
api.smartsheet.com
ã¯ããã¯ãã¹çœ²å蚌ææžããšåŒã°ãããã®ã䜿çšããŠTLSãæäŸããŸãã ããã䜿çšãããã®ã¯ãapi.smartsheet.com
ã®CAã§ããVerisignãå ã 1024ãããã®ã«ãŒã蚌ææžã䜿çšããŠããããã§ãã ãããã¯éæšå¥šã«ãªãããã匷åãªã«ãŒã蚌ææžã«çœ®ãæããããŸããããäžéšã®å€ããã©ãŠã¶ãã·ã¹ãã ã¯æŽæ°ãåä¿¡ããŠââããªãå¯èœæ§ããããããapi.smartsheet.com
ãªã©ã®ãµã€ãã¯1024ãããã«ãŒãã«ãã£ãŠçœ²åãããã«ãŒã蚌ææžãæäŸããŸããããã¯éåžžã¯åé¡ã§ã¯ãããŸããã_except_ïŒ
certifi
ã¯åŒ±ã1024ãããã«ãŒããåé€ããŸããããã¯2ã€ã®æ¹æ³ã§è§£æ±ºã§ããŸãã æåã®ãããè¯ããããææ¬çãªæ¹æ³ã¯ãOpenSSLã1.0.2以éã«ã¢ããã°ã¬ãŒãããããšã§ãã ããã¯Centosã§ã¯é£ããããšã§ããæãå ¥ããŸãã ããŸãè¯ãã¯ãããŸããããããå¹æçãªæ¹æ³ã¯ãå®è¡äžã®
python -c "import certifi; print certifi.old_where()"
ã®åºåãååŸããŠãããREQUESTS_CA_BUNDLE
ç°å¢å€æ°ãå°å·ããããã¹ã«èšå®ããããšã§ãã