java - 基于 https 的 SonarQube
问题描述
我正在尝试将 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 路径构建失败”和“无法找到请求目标的有效证书路径” 并导出证书并使用 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"
有什么建议么?
解决方案
设置“SONAR_SCANNER_OPTS”环境变量-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"
对我有用。
调试日志现在显示它指向环境变量中设置的密钥库。它既可以使用 Sonar-Scanner.bat 从命令行运行,也可以作为 TFS 2013 构建的一部分运行。
推荐阅读
- c# - 如何为 CompletionService.GetDescriptionAsync 结果指定语言环境?
- python-3.x - 应用具有多个参数的函数并将列数据中的值返回到新列
- xamarin - 切换离线和在线 Xamarin 表单时,Naxam MapBox 插件不呈现地图
- php - 如何从 PHP 多维数组中删除重复项,不区分大小写但保留大小写?
- c# - C# Razor 页面的 BindProperty 属性不起作用
- visual-studio-code - “Databricks-connect 测试”过程未结束
- vb.net - 如何更改文件夹中选定图像的设置?
- typescript - 如何创建一个触发 OneDrive 文件的函数,就像我可以在 BlobStorage 上做的那样?
- c - 从 LinkedList 中释放节点(内存方面)
- java - 如何将字符串值从活动发送到适配器?