在https上访问jenkins时出现Python CERTIFICATE_VERIFY_FAILED错误(虽然证书有效)

时间:2017-10-30 19:32:53

标签: python ssl jenkins jetty

我只是按照Jenkins中使用https的说明进行操作:How To Setup HTTPS within Jetty一切正常。当我从任何浏览器点击它时,它是安全的:

Valid HTTPS

不幸的是,当我使用python与Jenkins交互时,我现在收到错误:

import urllib2
import ssl
print(ssl.OPENSSL_VERSION)
response = urllib2.urlopen('https://jenkins.clearcareonline.com:8443')

OpenSSL 1.0.2l  25 May 2017
Traceback (most recent call last):

文件" foo.py",第6行,in     response = urllib2.urlopen(' https://jenkins.clearcareonline.com:8443')   文件" /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py" ;,第154行,在urlopen     return opener.open(url,data,timeout)   文件" /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py" ;,第429行,处于打开状态     response = self._open(req,data)   文件" /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py" ;,第447行,在_open中     ' _open',req)   文件" /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py" ;,第407行,在_call_chain中     result = func(* args)   文件" /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py" ;,第1241行,https_open     上下文= self._context)   文件" /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py" ;,第1198行,在do_open中     提出URLError(错误) urllib2.URLError:

我在Mac上。正如你所看到的,我甚至尝试更新我的openssl包(最初是OpenSSL 0.9.8zh 2016年1月14日),我也得到了同样的错误。

这就是为什么我认为它与Jenkins有关(或Jenkins是如何通过Jetty启动的):我使用SAME证书进行另一个安全的应用程序,我可以运行相同的脚本,它运行正常。< / p>

换句话说,使用相同的证书:

This fails:  urllib2.urlopen('https://jenkins.clearcareonline.com:8443')
This passes: urllib2.urlopen('https://apps.clearcareonline.com')

因此Java 8启动Jetty的方式导致python中出现CERTIFICATE_VERIFY_FAILED错误。我使用的是Python 2.7.12。它不仅仅适用于Mac。我开了一个AWS linux盒子,得到了相同的结果。

有关如何启动Jenkins的任何想法,以便我不会得到该python错误? 也许在Jenkins面前抛出一个ELB / nginx并在ELB上进行证书终止?我还添加了&#34; JENKINS_JAVA_OPTIONS =&#34; -Dhttps.protocols = TLSv1,TLSv1.1,TLSv1.2&#34;到我的/ etc / sysconfig / jenkins,但它没有改变任何东西。

0 个答案:

没有答案