证书_verify_fail jenkins api

发布于 2025-02-11 23:40:59 字数 5243 浏览 1 评论 0原文

因此,我有一些虚拟机,我正在创建此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:

jenkins

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

花落人断肠 2025-02-18 23:40:59

看来您的第二台服务器在证书链中具有自签名证书。您可以尝试禁用SSL验证。

jenkins = Jenkins(url, username, password, ssl_verify=False)

您可以阅读更多在这里

It seems your second server has self-signed certificates in the certificate chain. You can try to disable SSL verifications.

jenkins = Jenkins(url, username, password, ssl_verify=False)

You can read more here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文