【发布时间】:2019-03-30 18:52:41
【问题描述】:
我正在尝试将 SonarQube 与 TFS 2013 构建集成。 SonarQube 实例配置为使用 https。出于某种原因,TFS 在尝试联系 SonarQube 时抛出以下错误:
ERROR: Error during SonarQube Scanner execution <br /> ERROR: Unable to execute SonarQube ERROR: Caused by: Fail to get bootstrap index from server ERROR: Caused by: sun.security.validator.ValidatorException: PKIX path building failed:Sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target ERROR: Caused by: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target ERROR: Caused by: unable to find valid certification path to requested target
我发现了这个 SO 帖子:"PKIX path building failed" and "unable to find valid certification path to requested target" 并导出证书并使用 keytool 将其导入 java 密钥库。我仍然遇到同样的错误。 似乎 sonarQube 不知何故没有从默认的 java 密钥库中获取证书。
我尝试手动运行 sonar-scanner 并在参数中传递证书信息,但它仍然没有获取证书。
C:\SonarScanner\sonar-scanner-3.2.0.1227\bin>sonar-scanner.bat -X -Djavax.net.debug="ssl,handshake" -Djavax.net.ssl.trustStore="C:/Program Files/Java/jre1.8.0_121/lib/security/cacerts" -Djavax.net.ssl.keyStore="C:/Program Files/Java/jre1.8.0_121/lib/security/cacerts"
有什么建议吗?
【问题讨论】:
-
您是否重新启动了代理?
-
是的,我是在导入证书后这样做的。
-
每个参数前是否需要-X?你需要 -X 和 JavaVM arg 之间的空格吗? (如果你走到那一步,你是否还需要指定密钥库/信任库密码?)你能不能只指定密钥库以及它正在读取的属性文件中的属性?
-
@moilejter:-X 是获取调试输出的开关。 -D 是定义传递给 JavaVM 的属性的开关。我也尝试通过 KeyStorePassword,但它仍然没有获取证书。