首页 > 解决方案 > Azure DevOps“准备对 SonarQube 进行分析”任务对我们的 Azure 托管 SonarQube 服务器失败,并带有 Let's Encrypt 通配符证书

问题描述

在 Windows 托管代理上运行 SonarQube 任务时,我立即收到此错误。

[错误][SQ] API GET '/api/server/version' 失败,错误为:{"code":"UNABLE_TO_VERIFY_LEAF_SIGNATURE"}

该错误显然与此Let's Encrypt 签名说明中讨论的内容有关。

使用该页面上的信息作为指导并尝试解决问题,我在 DevOps 作业中创建了一个前置任务,以将链中的所有证书从我们的通配符添加到 DevOps 代理框中的 Java 密钥库发行人(包括交叉签名人)。我能够做到这一点,但我仍然从后续的声纳任务中得到错误。

当我从代理对 /api/server/version 端点调用 curl 时,我收到错误“curl:(60)SSL 证书问题:无法获取本地颁发者证书”。

据我了解,Sonar 任务将依赖 Java 密钥库,但 curl 不依赖。这使得这两个应用程序似乎都可以工作,我需要在 2 个地方添加这些受信任的证书,但我什至一个都没有找到。谁能指导我解决此问题的说明?

戴夫

更新:意识到“问题”证书可能会有所帮助。你可以在这里得到它的链接

标签: javasslsonarqubeazure-devopslets-encrypt

解决方案


我发现这个问题的根源是我需要在 JRE 证书存储中导入 SonarQuBe 证书作为信任证书。

您可以尝试以下步骤:

  1. 从这里下载密钥库资源管理器
  2. 打开 $JAVA_HOME/jre/lib/security/cacerts
  3. 输入密码:changeit(Mac上可以是changeme)
  4. 导入您的 .crt 文件。
  5. 保存并替换 cacerts 文件。

推荐阅读