Intellij Azure DevOps 插件在 TFVC 上获取 SSL 错误

Intellij Azure DevOps plugin getting SSL error on TFVC get

我们正在使用 Intellij IDEA 2020.1 Community Edition Windows 使用 Azure DevOps 插件进行开发。我们最近从 2019.2.2 升级。我们最初遇到了 TFS 服务器的服务器证书问题。我们可以通过允许 Intellij 自动接受未知证书来联系服务器。但是,我们无法提取 TFVC 存储库。这是错误的堆栈跟踪

我们通过将公司提供给我们的 cacerts 文件放到 .IdeaC2019.2\system\tasks 目录中来解决旧版本的问题。这在这个版本上不起作用。我们可以浏览 TFVC 集合,但无法创建工作区。我们能够从 Chrome.

访问 TFS 存储库

提前感谢您的帮助。

编辑:问题似乎出在 Microsoft tf 命令行实用程序中。我们处于非常严格锁定的虚拟桌面中(对风险极其敏感的业务),因此我们不能将证书放在默认的 java 密钥库中。旧的 tf 实用程序有一个配置文件命令,可让您设置属性。现在不存在了。

您可以通过 Help -> Edit Custom VM Options... 在 IntelliJ Idea 中设置自定义 JVM 选项并在文件中添加以下内容,然后重新启动 IntelliJ Idea。

-Djavax.net.ssl.trustStore=<path to the cacerts file>

这应该 IDE 将 cacerts 文件用于受信任的证书。

从报错信息来看,确实是证书问题。

您可以尝试以下步骤导入证书。

  1. 连接到 Azure Devops 服务器并导出证书。

  1. 导航到密钥工具路径。我安装了 Intellij IDEA 2020.1.4。所以路径是C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.1.4\jbr\bin

  2. 运行 导入证书的脚本。

例如:

keytool -keystore "C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.1.4\jbr\lib\security\cacerts" -importcert -alias TFS -file "C:\test\tfs.cer"

更详细的信息可以参考this Blog

另一方面,您也可以直接将需要的证书复制到security folder pathIntellij IDEA 2020.1.4 -> C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.1.4\jbr\lib\security

我们通过创建单独的信任库并导入证书解决了这个问题。然后我们编辑了插件使用的 tf 脚本。我们添加了 TF_ADDITIONAL_JAVA_ARGS 环境变量,如下所示(您的路径会有所不同):

set JAVA_TOOL_OPTIONS=
set JAVA_OPITIONS=
set TF_ADDITIONAL_JAVA_ARGS=-Djavax.net.ssl.trustStore=%USERPROFILE%\AppData\Local\JetBrains\IdealIC2020.1\tasks\cacerts -Djavax.net.ssl.trustStorePassword=changeit