《Maven官方指南》通过https认证远程仓库权限指南

原文地址    译者:carvendy

通过https认证远程仓库权限指南

这个文档描述怎么样配置一个maven远程仓库权限,有一个http服务需要客户端认证。这样的预期就是这文档会被 Maven 1.0 和 Maven 2.0认证。

问题

你有一个服务存储maven仓库在地址https://my.server.com/maven。这个服务只服务客户端通过ssl协议认证,被注册到一个经核实的,我们叫做CACrt的权限认证。在最简单的例子里服务被内部用于确定社区用户(例如:公司内网),服务权限认证只能有服务内部使用。

所以我们假定我们有权限在X.509格式存储文件中认证:

/somewhere/in/filesystem/CACert.cert

这个客户端认证已经发布到一些没有描述的PKCS#12格式文档,这个格式会被浏览器接受(最新的火狐和IE)作为他们的密钥库。这个文件命名为:

/home/directory/mycertificate.p12

和我们假定它可以被maven运行。标记这个文件包含了客户端的私钥可能有敏感信息和所以是由密码担保。

CeRtPwD

这个远程仓库通过pom文件(Maven 2.0)引用或者build.properties 或者 project.properties(Maven 1.0)。在Maven 1.0:

maven.repo.remote=https://my.server.com/maven,http://www.ibiblio.org/maven

解决方案

对于使用maven仓库,我们应该遵循:

  1. 创建一个能保存服务认证使用的sun的ketool的存储。
  2. 定义属性可以被http客户端发现key和认证。

存储认证

下列命令行导入认证的证书为JKS格式的密钥存储命名trust.jks,信托存储。

$> keytool -v -alias mavensrv -import \
     -file /somewhere/in/filesystem/CACert.cert\
      -keystore trust.jks
Enter keystore password:
Owner: ....
Issuer: ....
Serial number: ....
Valid from: Mon Feb 21 22:34:25 CET 2005 until: Thu Feb 19 22:34:25 CET 2015
Certificate fingerprints:
         MD5:  .......
         SHA1: .....
Trust this certificate? [no]:  yes
Certificate was added to keystore
[Storing trust.jks]
$>

请注意,只有一个根证书被信任,但作者没有测试它,可以导入完整的证书链。

设置属性值

下面的属性必须设置在启动Maven可以当HttpClient启动。

javax.net.ssl.trustStore 路径是存储需要被认证的秘钥库 javax.net.ssl.trustStoreType 在存储库的存储类型, 可能是 jks (default) 或者 pkcs12 javax.net.ssl.trustStorePassword 保护存储的密码javax.net.ssl.keyStore 用户私有key的存储路径 javax.net.ssl.keyStoreType 在key存储库的存储类, 可能是 jks (default) or pkcs12 javax.net.ssl.keyStorePassword 保护key存储的密码

不是所有配置必须被设置到你的精确设置中:存储类型可能使用默认的,密码可能为空。

Maven 2.0

他们肯本设置maven的命令行,在**.mavenrc文件或在MAVEN_OPS环境变量。作为设置定义的文档这里是.mavenrc**文件的例子:

MAVEN_OPTS="-Xmx512m -Djavax.net.ssl.trustStore=trust.jks \
                     -Djavax.net.ssl.trustStorePassword=  \
                     -Djavax.net.ssl.keyStore=/home/directory/mycertificate.p12 \
                     -Djavax.net.ssl.keyStoreType=pkcs12 \
                     -Djavax.net.ssl.keyStorePassword=XXXXXX"

给maven 1.0用户

设置这些属性中存储或project.properties不工作的性质在任何这些文件打开需要。

链接

下面的链接可用于了解SSL在java基础设施管理:

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《Maven官方指南》通过https认证远程仓库权限指南

  • Trackback 关闭
  • 评论 (0)
  1. 暂无评论

return top