m2e使用基于证书的ssl身份验证

时间:2014-10-27 11:58:21

标签: java eclipse maven ssl-certificate m2e

TL; DR

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

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

问题

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

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

有趣的是,外部和嵌入式Mavens都有相同的版本(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会显示出来。

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

4 个答案:

答案 0 :(得分:5)

对我不起作用的选项

  • 将证书安装到java> jre> lib>安全> cacerts中
  • 在java run configuration vm arguments中提供cacerts
  • 将eclipse更新为最新版本,如火星或霓虹灯
  • 将eclipse的maven插件更新为1.7.0

为我解决问题的步骤

  • Download certificate file&在偏好设置>中添加eclipse;远程系统> SSL>添加
  • 清除.m2>所有现有文件的存储库文件夹
  • 打开eclipse,右键单击项目并选择 Maven>更新项目。选择强制更新快照/版本

于2017年9月19日更新

答案 1 :(得分:3)

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

通过升级到最新的jvm(在我的情况下为1.8.0u52)并将Eclipse m2e插件升级到1.6.1版(使用Eclipse版本4.4.0)来解决问题。

答案 2 :(得分:1)

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

这就是为我解决的问题。

答案 3 :(得分:0)

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