证书_verify_fail jenkins api
因此,我有一些虚拟机,我正在创建此Python脚本,该脚本连接到我们运行的Jenkins网站,一切都有效:
然后我在另一台服务器上运行了完全相同的代码,但是这次我得到了这个有线错误?
$ py test.py
Traceback (most recent call last):
File "C:\programs\python3102\lib\site-packages\urllib3\connectionpool.py", line 597, in urlopen
httplib_response = self._make_request(conn, method, url,
File "C:\programs\python3102\lib\site-packages\urllib3\connectionpool.py", line 343, in _make_request
self._validate_conn(conn)
File "C:\programs\python3102\lib\site-packages\urllib3\connectionpool.py", line 839, in _validate_conn
conn.connect()
File "C:\programs\python3102\lib\site-packages\urllib3\connection.py", line 337, in connect
self.sock = ssl_wrap_socket(
File "C:\programs\python3102\lib\site-packages\urllib3\util\ssl_.py", line 344, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\programs\python3102\lib\ssl.py", line 512, in wrap_socket
return self.sslsocket_class._create(
File "C:\programs\python3102\lib\ssl.py", line 1070, in _create
self.do_handshake()
File "C:\programs\python3102\lib\ssl.py", line 1341, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:997)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\programs\python3102\lib\site-packages\requests\adapters.py", line 439, in send
resp = conn.urlopen(
File "C:\programs\python3102\lib\site-packages\urllib3\connectionpool.py", line 637, in urlopen
retries = retries.increment(method, url, error=e, _pool=self,
File "C:\programs\python3102\lib\site-packages\urllib3\util\retry.py", line 398, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='xxx.com', port=443): Max retries exceeded with url: /crumbIssuer/api/json (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:997)')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\usnname\Desktop\test.py", line 20, in <module>
test = jenkins_connection.get_node_info(node)
File "C:\programs\python3102\lib\site-packages\jenkins\__init__.py", line 1504, in get_node_info
response = self.jenkins_open(requests.Request(
File "C:\programs\python3102\lib\site-packages\jenkins\__init__.py", line 557, in jenkins_open
return self.jenkins_request(req, add_crumb, resolve_auth).text
File "C:\programs\python3102\lib\site-packages\jenkins\__init__.py", line 573, in jenkins_request
self.maybe_add_crumb(req)
File "C:\programs\python3102\lib\site-packages\jenkins\__init__.py", line 370, in maybe_add_crumb
response = self.jenkins_open(requests.Request(
File "C:\programs\python3102\lib\site-packages\jenkins\__init__.py", line 557, in jenkins_open
return self.jenkins_request(req, add_crumb, resolve_auth).text
File "C:\programs\python3102\lib\site-packages\jenkins\__init__.py", line 576, in jenkins_request
self._request(req))
File "C:\programs\python3102\lib\site-packages\jenkins\__init__.py", line 550, in _request
return self._session.send(r, **_settings)
File "C:\programs\python3102\lib\site-packages\requests\sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "C:\programs\python3102\lib\site-packages\requests\adapters.py", line 514, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='xxx.com', port=443): Max retries exceeded with url: /crumbIssuer/api/json (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:997)')))
似乎在抱怨一些证书错误吗?
,我以前从未见过,所以我想知道我是否可以找到有关要解决的问题的建议?
这两台机器都运行Python 3.10.2
,并安装了相同的软件包。
代码本身看起来像这样:
try:
import jenkins
except ImportError:
import pip
pip.main(["install", "--upgrade", "python-jenkins"])
import jenkins
# Login settings
JENKINS_URL = "https: // xxx.com"
USERNAME = "xxx"
API_TOKEN = "xxx"
JENKINS_NODES = ["PD100089"]
# Connect to server with API token
jenkins_connection = jenkins.Jenkins(JENKINS_URL, USERNAME, API_TOKEN)
# Loop through list of nodes and make them online
for node in JENKINS_NODES:
# Get node XML configurations
test = jenkins_connection.get_node_info(node)
# Check if XML node configuration is online/offline
if not test['offline']:
print("- " + node + " is already online...")
# Stop script
continue
# Turn node back online
print("- Turning " + node + " back online...")
jenkins_connection.enable_node(node)
我可以从Google Chrome上访问两台机器上的网站,没有任何问题。
So I have some virtual machines, and I was creating this python script, which conencts to a Jenkins website we have running, and everything works:
I then ran the exact same code on another server, but this time I got this wired error?
$ py test.py
Traceback (most recent call last):
File "C:\programs\python3102\lib\site-packages\urllib3\connectionpool.py", line 597, in urlopen
httplib_response = self._make_request(conn, method, url,
File "C:\programs\python3102\lib\site-packages\urllib3\connectionpool.py", line 343, in _make_request
self._validate_conn(conn)
File "C:\programs\python3102\lib\site-packages\urllib3\connectionpool.py", line 839, in _validate_conn
conn.connect()
File "C:\programs\python3102\lib\site-packages\urllib3\connection.py", line 337, in connect
self.sock = ssl_wrap_socket(
File "C:\programs\python3102\lib\site-packages\urllib3\util\ssl_.py", line 344, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname)
File "C:\programs\python3102\lib\ssl.py", line 512, in wrap_socket
return self.sslsocket_class._create(
File "C:\programs\python3102\lib\ssl.py", line 1070, in _create
self.do_handshake()
File "C:\programs\python3102\lib\ssl.py", line 1341, in do_handshake
self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:997)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\programs\python3102\lib\site-packages\requests\adapters.py", line 439, in send
resp = conn.urlopen(
File "C:\programs\python3102\lib\site-packages\urllib3\connectionpool.py", line 637, in urlopen
retries = retries.increment(method, url, error=e, _pool=self,
File "C:\programs\python3102\lib\site-packages\urllib3\util\retry.py", line 398, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='xxx.com', port=443): Max retries exceeded with url: /crumbIssuer/api/json (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:997)')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\usnname\Desktop\test.py", line 20, in <module>
test = jenkins_connection.get_node_info(node)
File "C:\programs\python3102\lib\site-packages\jenkins\__init__.py", line 1504, in get_node_info
response = self.jenkins_open(requests.Request(
File "C:\programs\python3102\lib\site-packages\jenkins\__init__.py", line 557, in jenkins_open
return self.jenkins_request(req, add_crumb, resolve_auth).text
File "C:\programs\python3102\lib\site-packages\jenkins\__init__.py", line 573, in jenkins_request
self.maybe_add_crumb(req)
File "C:\programs\python3102\lib\site-packages\jenkins\__init__.py", line 370, in maybe_add_crumb
response = self.jenkins_open(requests.Request(
File "C:\programs\python3102\lib\site-packages\jenkins\__init__.py", line 557, in jenkins_open
return self.jenkins_request(req, add_crumb, resolve_auth).text
File "C:\programs\python3102\lib\site-packages\jenkins\__init__.py", line 576, in jenkins_request
self._request(req))
File "C:\programs\python3102\lib\site-packages\jenkins\__init__.py", line 550, in _request
return self._session.send(r, **_settings)
File "C:\programs\python3102\lib\site-packages\requests\sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "C:\programs\python3102\lib\site-packages\requests\adapters.py", line 514, in send
raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='xxx.com', port=443): Max retries exceeded with url: /crumbIssuer/api/json (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:997)')))
Seems it's complaining about some certificate error?
, I just haven't seen this before, so I was wondering if I could get some suggestions on what to look for, to fix this?
Both machines run python 3.10.2
, and have the same packages installed.
The code itself looks like this:
try:
import jenkins
except ImportError:
import pip
pip.main(["install", "--upgrade", "python-jenkins"])
import jenkins
# Login settings
JENKINS_URL = "https: // xxx.com"
USERNAME = "xxx"
API_TOKEN = "xxx"
JENKINS_NODES = ["PD100089"]
# Connect to server with API token
jenkins_connection = jenkins.Jenkins(JENKINS_URL, USERNAME, API_TOKEN)
# Loop through list of nodes and make them online
for node in JENKINS_NODES:
# Get node XML configurations
test = jenkins_connection.get_node_info(node)
# Check if XML node configuration is online/offline
if not test['offline']:
print("- " + node + " is already online...")
# Stop script
continue
# Turn node back online
print("- Turning " + node + " back online...")
jenkins_connection.enable_node(node)
I can access the websites on both machines from google chrome without any problem.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看来您的第二台服务器在证书链中具有自签名证书。您可以尝试禁用SSL验证。
您可以阅读更多在这里。
It seems your second server has self-signed certificates in the certificate chain. You can try to disable SSL verifications.
You can read more here.