java - 带有 SonarLint (3.1) 的 Eclipse (neon) 无法连接到 SonarQube 服务器 (5.6.1)

标签 java eclipse ssl sonarqube sonarlint

这里有一些与旧版本类似的问题,但那里提供的解决方案对我的情况没有帮助 - 所以我希望对这个更新的配置有一些了解。

我通过 Eclipse 市场安装了最新的 SonarLint (3.1),但我无法让 SonarLint 连接到我们的 SonarQube 服务器 (5.6.1)。

当我在 SonarQube servers View 中单击 Test connection 时,它无法连接到 https://our.sonarqube-server.com/api/系统/状态javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX 路径构建失败

浏览器将在 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 ... 安装了它们truststore 并使用 -list 检查它们确实存在。

版本应该兼容(据说 SonarLint 3.1 与 SonarQube 服务器 5.6+ 兼容)。

你知道这个配置还有什么问题吗?当我在自己的机器上安装本地 SonarQube 服务器时,我可以用相同的方式成功连接到 localhost:9000(生成 token - 就像我在 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。

当您对来自浏览器和 IDE 的请求进行 WireShark 时,您可以看到密码套件完全不同并且 IDE 插件出现 TLS 握手失败。

这让我发现 Java 仍然附带强度有限的加密函数。这要么是因为美国的导出政策,要么是因为没有人抽出时间来解决它。互联网不太确定。

无论哪种方式,您都可以从 Oracle 下载 Java 密码术扩展 (JCE) 无限强度管辖策略文件:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

将它们安装到 IntelliJ JVM 后,我在尝试连接到 SonarQube 时不再遇到底层 TLS 握手失败并且连接正常。

IntelliJ 会询问您有关证书的信息,因此所有这些都比手动处理证书更容易。

关于java - 带有 SonarLint (3.1) 的 Eclipse (neon) 无法连接到 SonarQube 服务器 (5.6.1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44050859/

相关文章:

java - 我该如何在 Java swing 中进行这种布局?

java - 如何按实例计算方法调用

c++ - 错误: Program "make" not found in PATH

ssl - Squid3 SSL-凸 block

python - 如何使用自签名证书限制访问?

Python 无法将请求绑定(bind)到网络接口(interface)

java - 使用 BigQuery 读取 JSON 文件以制作表格

java - 为什么人们如此害怕使用 clone()(在集合和 JDK 类上)?

java - 运行使用一些静态文件的现有项目

java - 在 Eclipse 中克隆 git 存储库