具有基于 ssl 证书的身份验证的 m2e
Posted
技术标签:
【中文标题】具有基于 ssl 证书的身份验证的 m2e【英文标题】:m2e with ssl certificate-based authentication 【发布时间】: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 之外,这些东西可以完美运行。
【参考方案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 日更新
如果没有其他方法,Installing the certificate to Java 在您的机器上@java > jre > lib > security > cacerts 可以提供帮助【讨论】:
谢谢。在我按照建议执行 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->安装->添加
【讨论】:
以上是关于具有基于 ssl 证书的身份验证的 m2e的主要内容,如果未能解决你的问题,请参考以下文章