【问题标题】:Jenkins refuses to update Plugins over HTTPS when behind proxy, gives 403Jenkins 在代理后拒绝通过 HTTPS 更新插件,给出 403
【发布时间】:2017-06-27 21:11:41
【问题描述】:

我们的 jenkins 环境位于一个代理后面,该代理要求所有流量都通过 HTTPS 并在白名单域上。我们终于拿到了白名单https://updates.jenkins.io/https://updates.jenkins-ci.org/ 的门票。当我们在 Jenkins 中设置代理配置并进行测试时,这些 URL 验证成功。我们可以查看更新信息,并获取更新通知。

然而,当我们尝试更新插件时,在此示例中的 Active Directory 插件中,它拒绝使用 https URL 来获取 Jenkins 更新链接。您可以看到 Jenkins 找到互联网连接和更新中心连接,但失败并出于某种原因决定使用非 https 镜像进行更新:

我们已尝试使用UpdateSites Manager Plugin 指定更新站点:

为什么 Jenkins 不尝试使用我们指定的 URL?

【问题讨论】:

    标签: jenkins https proxy jenkins-plugins


    【解决方案1】:

    根本原因在于插件下载 url,而不是元数据链接(https://updates.jenkins.io/https://updates.jenkins-ci.org/)。虽然您需要与这些域进行 HTTPS 通信。

      "active-directory": {
      "buildDate": "Jun 22, 2017",
      "compatibleSinceVersion": "2.0",
      "dependencies": [
        {
          "name": "mailer",
          "optional": false,
          "version": "1.5"
        }
      ],
      "developers": [
        {
          "developerId": "kohsuke",
          "name": "Kohsuke Kawaguchi"
        },
        {
          "developerId": "fbelzunc",
          "name": "Felix Belzunce Arcos"
        }
      ],
      "excerpt": "Enables authentication through Active Directory",
      "gav": "org.jenkins-ci.plugins:active-directory:2.6",
      "labels": [
        "user"
      ],
      "name": "active-directory",
      "previousTimestamp": "2017-06-20T10:22:20.00Z",
      "previousVersion": "2.5",
      "releaseTimestamp": "2017-06-22T12:54:26.00Z",
      "requiredCore": "1.554.1",
      "scm": "https://github.com/jenkinsci/active-directory-plugin",
      "sha1": "yihOF0cMc3V3ScLklIcq+6zNXlA=",
      "title": "Jenkins Active Directory plugin",
      "url": "http://updates.jenkins-ci.org/download/plugins/active-directory/2.6/active-directory.hpi",
      "version": "2.6",
      "wiki": "https://plugins.jenkins.io/active-directory"
    },
    

    如您所见,下载链接为http://

    "url": "http://updates.jenkins-ci.org/download/plugins/active-directory/2.6/active-directory.hpi",
    

    因此,如果您进行连接测试,您将遇到错误(而在我的情况下,它是 success)。

    可能的解决方案是设置some proxy server 以避免直接的HTTP 通信。

    它是如何工作的:

    1. 代理服务器在您的防火墙之外,您使用 HTTPS 对该代理服务器进行身份验证
    2. 代理服务器仍将使用 HTTP 下载这些插件

    如果这有帮助,请告诉我!

    【讨论】:

      【解决方案2】:

      你的问题比这更糟。原始下载请求将针对updates.jenkins.io 更新站点,但通常实际的插件下载将重定向到托管在不同域的其他地方的镜像/cdn 类型位置。如果您在 hpi 文件下载链接上执行 curl 命令,您将看到一系列 302 重定向,直到您到达实际文件。

      关于这个问题的解释请看这篇文章https://www.north-47.com/knowledge-base/update-jenkins-plugins-behind-a-corporate-proxy/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-30
        • 1970-01-01
        • 2013-08-17
        • 2018-07-18
        • 2017-08-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多