【问题标题】:m2e with ssl certificate-based authentication具有基于 ssl 证书的身份验证的 m2e
【发布时间】:2014-12-22 14:29:01
【问题描述】:

TL;DR

如何使 Eclipse 的内置 Maven 连接到使用基于证书的身份验证的 HTTPS 存储库?

m2e 似乎能够找到密钥库,但无法连接。命令行 Maven 使用完全相同的密钥库就像一个魅力。 Run as -> Maven build 适用于外部 Maven 而不是嵌入式 Maven。

问题

我有一个带有依赖项的 Maven 项目。除了常规的用户名-密码组合之外,该依赖项在使用基于 SSL 证书的身份验证的存储库中可用。我需要使用内置的 Maven 在 Eclipse Luna 中使其工作。我所能得到的只是handshake_failure。对日志的调查显示,内置的 Maven 无法找到匹配的证书。

当我将Run as -> Maven build 与外部 Maven 或命令行 Maven 一起使用时,它会成功连接到存储库并完全根据需要获取工件。

有趣的是,外部和嵌入式 Maven 具有相同的版本 (3.2.3)。

设置

我通过eclipse.ini传递这些参数:

-Djavax.net.ssl.trustStore=java.cacerts
-Djavax.net.ssl.trustStorePassword=******
-Djavax.net.ssl.keyStore=private.cacerts
-Djavax.net.ssl.keyStorePassword=******
-Djavax.net.debug=ssl,handshake

trustStore 文件包含:

  • 我连接到的存储库的整个证书链(链以自签名证书结尾),其中一个存储在别名 repository.location.url 下(此处为文字存储库位置,例如 myrepository.com)
  • maven central 证书

keyStore 文件包含存储库别名下的导入 PKCS 证书。

设置似乎完全没有问题,因为命令行 Maven 可以工作。如果我使用外部 Maven 或命令行之一,它可以工作。如果我切换到嵌入式(总是用于解决依赖关系),handshake error 就会出现。

我做错了什么?我可能遗漏了一些非常明显的东西。任何帮助将不胜感激。

【问题讨论】:

  • 我的第一个猜测是 Eclipse 中的代理设置,但即使是那些也应该使用 VM 的密钥库:-/ Odd。 Eclipse、Java 和 m2e 哪个版本?
  • @AaronDigulla Eclipse Luna 4.4.1、m2e 1.5.0(带有 Maven 3.2.1)和 1.6.0 (3.2.3)、Java 1.7 和 1.8(jdk 和 jre)
  • 您在-vmargs 行之后添加了-D 选项?
  • 您的问题可能与使用自签名证书从更新站点安装 Eclipse 插件相同:eclipsesource.com/blogs/2013/04/19/… 您上面的方法看起来是正确的。
  • @AaronDigulla 是的,那些-D 的东西出现在-vmargs 之后。 Eclipse 使用的 VM 能够找到文件并列出证书(使用 -Djavax.net.debug=ssl,handshake),但它无法找到正确的证书。在 Eclipse 的 VM 之外,这些东西可以完美运行。

标签: java eclipse maven ssl-certificate m2e


【解决方案1】:

对我不起作用的选项

  • 将证书安装到 java > jre > lib > security > cacerts
  • 在 java 运行配置 vm 参数中提供 cacerts
  • 将 eclipse 更新到最新版本,如火星或霓虹灯
  • 将 Eclipse 的 maven 插件更新到 1.7.0

为我解决问题的步骤

  • Download certificate file 并在 Preferences > Remote Systems > SSL > Add 处添加 eclipse
  • 清除 .m2 > 所有现有文件的存储库文件夹
  • 打开 Eclipse,右键单击项目并选择 Maven > 更新项目。选择强制更新快照/版本

于 2017 年 9 月 19 日更新

【讨论】:

  • 谢谢。在我按照建议执行 Maven > Update Project 后它起作用了。
  • m2e 1.14.0 (with eclipse 2019.12) here,它仍然无法正常工作...命令行 maven 可以正常工作。 eclipse 和命令行都运行相同的 JVM 并安装了证书
【解决方案2】:

我遇到了完全相同的问题:Eclipse 无法使用嵌入式 maven 安装连接到外部 maven 存储库,以防存储库需要客户端 SSL 证书。

通过升级到最新的 jvm(在我的例子中 - 1.8.0u52)并将 Eclipse m2e 插件升级到版本 1.6.1(使用 Eclipse 版本 4.4.0)解决了这个问题。

【讨论】:

  • 看来m2e更新成功了,1.6.1似乎没有这个问题
  • m2e 1.13.0 (with eclipse 2019.09) here,它仍然无法正常工作...命令行 maven 可以正常工作
【解决方案3】:

在您的运行配置中,选择您的 maven 构建,然后选择对话框顶部的 JRE 选项卡。将您的 SSL 参数放入 VM 参数文本区域。

这就是为我解决的问题。

【讨论】:

  • 问题是关于嵌入式 Maven,即 Eclipse 在内部用于更新项目的那个。外部的,即用于运行配置的,工作得很好。
【解决方案4】:

我设法通过在 Eclipse 中设置外部 maven 来修复它。 Eclipse->窗口->首选项->Maven->安装->添加

【讨论】:

    猜你喜欢
    • 2016-10-02
    • 1970-01-01
    • 2013-08-04
    • 2018-02-24
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 2018-12-07
    • 2017-01-23
    相关资源
    最近更新 更多