对于较早的版本,这里也有一些类似的问题,但是对于我而言,此处提供的解决方案没有帮助-因此,我希望对这种最新的配置有所了解。
我通过Eclipse市场安装了最新的SonarLint(3.1),但无法使SonarLint连接到我们的SonarQube服务器(5.6.1)。
当我在SonarQube服务器视图中单击Test connection
时,它无法通过https://our.sonarqube-server.com/api/system/status
连接到javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed
。
浏览器将在https://our.sonarqube-server.com/api/system/status
上显示信息(某些ID,版本5.6.1,UP)。因此服务器已启动并正在运行。
为了确保我安装了正确的证书,我在“帮助”->“关于Eclipse”->“安装详细信息”->“正在运行jre1.8.0_131的配置”下进行了检查。我从our.sonarqube-server.com的链中下载了3个证书,并将它们与bin\keytool.exe -import -trustcacerts -keystore lib\security\cacerts -storepass changeit ...
安装在信任库中,并通过-list
检查它们是否确实存在。
这些版本应该兼容(据说SonarLint 3.1与SonarQube服务器5.6+兼容)。
您是否知道此配置仍然有什么问题?当我在自己的机器上安装本地SonarQube服务器时,我可以以相同的方式成功连接到localhost:9000
(生成令牌-就像我在our.sonarqube-server.com上所做的那样)。由于localhost:9000
不涉及SSL,我想SonarLint插件正在其他地方寻找证书,但是我不知道如何查找它的外观……
谢谢你的帮助。
最佳答案
我自己使用SonarLint 3.1和SonarQube 6.7遇到了类似的情况。
在IntelliJ中,我一直遇到此错误消息
Failed to connect to the server. Please check the configuration.
Error: Fail to request https://<SONARQUBE>/api/system/status
但是,我可以通过浏览器访问该URL,而没有任何问题。
当您使用WireShark发送来自浏览器和IDE的请求时,您会看到密码套件非常不同,并且IDE插件发生TLS握手失败。
这使我发现Java仍带有有限强度的加密功能。那是因为美国的出口政策,还是因为没人来解决这个问题。互联网不是很确定。
无论哪种方式,您都可以从Oracle下载Java密码学扩展(JCE)无限强度管辖权策略文件:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
一旦将它们安装到IntelliJ JVM上,尝试连接到SonarQube且连接正常时,我不再遇到潜在的TLS握手故障。
IntelliJ会询问您有关证书的信息,因此,与手动处理证书相比,所有这些操作都更容易。