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

Sor*_*row 10 java eclipse ssl-certificate maven 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
Run Code Online (Sandbox Code Playgroud)

trustStore文件包含:

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

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

设置似乎没有问题,因为命令行Maven工作.如果我使用外部Maven或命令行,它可以工作.如果我开始嵌入一个(它总是用于解析依赖关系),则handshake error显示出来.

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

小智 5

对我不起作用的选项

  • 将证书安装到Java> jre> lib>安全性> cacerts
  • 在Java运行配置vm参数中提供cacerts
  • 将日食更新到火星或霓虹灯等最新版本
  • 将Eclipse的Maven插件更新到1.7.0

为我解决问题的步骤

  • 下载证书文件并在“首选项”>“远程系统”>“ SSL”>“添加”中添加 eclipse。
  • 清除所有现有文件的.m2>存储库文件夹
  • 打开eclipse,右键单击项目,然后选择Maven> Update Project。选择强制更新快照/发行版

于2017年9月19日更新


小智 4

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

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