SSL问题在Maven中下载资源

时间:2010-02-13 09:36:44

标签: java maven-2 ssl maven confluence

我正在尝试创建一个Confluence插件。我一直在关注这些instructions

然而,当我运行atlas-create-confluence-plugin命令时,maven会尝试从https://m2proxy.atlassian.com/repository/public/获取资源时发生SSL错误。

alt text http://img46.imageshack.us/img46/6281/mavenssl.jpg

我是否需要更改配置中的设置?

系统设置:Windows Vista,Apache Maven 2.1.0(r755702; 2009-03-18 19:10:27 + 0000)

4 个答案:

答案 0 :(得分:5)

通过SSL访问存储库实际上不是Maven问题(它使用HttpClient和java.net包中的最终类),这是纯Java问题:远程存储库的证书具有要信任,即此证书的CA根证书必须位于JRE中捆绑的cacerts文件中,或者您需要手动建立信任链。

https://m2proxy.atlassian.com/的特定情况下,证书由DigiCert CA颁发。

奇怪的是,最近的JDK(Java 5u15或更高版本或Java 6u5或更高版本,请参阅Bug ID:6647251)具有DigiCert的CA根证书。因此,对于最近的JDK,事情应该可以正常工作(除非你有一个代理人像this issue那样做一些黑魔法)。

如果您使用的是较旧的JDK且无法升级,请从浏览器导出证书,使用keytool将其添加到信任库并设置Java以使用此信任库(使用{{1 }和javax.net.ssl.trustStore系统属性)。有关如何执行此操作的详细信息,请参阅Maven mini guide和/或此blog post

但最简单的方法是使用最近的JDK。

答案 1 :(得分:0)

好的,这看起来我错了。

由于某些原因,maven没有下载maven-confluence-plugin-3.0.5.jar文件。我不得不从URL手动下载此文件,并将其添加到正确的位置.m2目录。

之后,整个过程运作良好。

答案 2 :(得分:0)

在大多数情况下,Pascal's answer是可行的方法。但是,如果您自己构建Maven,它就不起作用(至少从Maven 3.2.3开始),因为ant无法通过必要的javax.net属性调用MavenCli类让Maven构建Maven的剩余部分。

此问题的解决方案是修改maven源目录根目录中的build.xml文件,并将这些行添加到maven-compile目标:

<arg value="-Djavax.net.ssl.trustStore=/path/to/trustStore" />
<arg value="-Djavax.net.ssl.trustStorePassword=TrustStorePassword" />

答案 3 :(得分:0)

在Windows中执行以下操作有助于命令行执行

SET MAVEN_OPTS = -Djavax.net.ssl.trustStore =“ C:\ Program Files \ Java \ jdk1.8.0_201
jre \ lib \ security \ cacerts“

我得到的错误如下 意外错误:java.security.InvalidAlgorithmParameterException:trustAnchors参数必须为非空

(也可以调整mvn.cmd ...) 希望这个帮助