【工具篇】Maven加密Nexus用户密码

背景说明

按照DevOps三级要求,Maven工具发布Nexus帐号不能使用明文密码,需要对settings.xml文件中的password密码进行加密存储。下面就说一下具体的加密过程及配置方法。

环境说明

Maven:Apache Maven 3.6.3
Nexus:OSS 3.29.2-02(免费版)

解决方法

1. 获取加密盐值

输入mvn --encrypt-master-password回车然后输入给密码加盐的盐值

Microsoft Windows [版本 10.0.19044.2965]
(c) Microsoft Corporation。保留所有权利。

C:\Users\Administrator>mvn --encrypt-master-password
Master password: (这里输入你指定的master明文密码)
{XMoA0lJCA4kH6fS7L94mriQnQH5UlNianaSEFMG4HFI=} (这是根据明文MasterPassword计算的密码)

【工具篇】Maven加密Nexus用户密码_第1张图片

2. 将加密盐值放到指定文件

将步骤1️⃣获取到的加密盐值放到当前登录用户名\.m2\settings-security.xml的这个文件的master标签内,没有这个文件就新建,以下是这个文件的完整内容:



<settingsSecurity>
    
    <master>{XMoA0lJCA4kH6fS7L94mriQnQH5UlNianaSEFMG4HFI=}master>
settingsSecurity>

【工具篇】Maven加密Nexus用户密码_第2张图片
注意:只能放在该目录下,且配置文件名必须为settings-security.xml

3. 给私服密码进行加密

输入mvn --encrypt-password命令回车,然后输入要加密的仓库密码,比如我的就输入esunny123,得到的密码就是加密后的密码:

Microsoft Windows [版本 10.0.19044.2965]
(c) Microsoft Corporation。保留所有权利。

C:\Users\Administrator>mvn --encrypt-password
Password:  (输入你nexus私服对应Repository的密码)
{bX/oRMMjQAcHIkQ7R5RYrvhQliT3KRQVykhXD4q2t58=} (这是根据明文Password计算的密码)

【工具篇】Maven加密Nexus用户密码_第3张图片
注意:必须先按照步骤2执行,否则会报错,报错信息如下:
【工具篇】Maven加密Nexus用户密码_第4张图片

4. 替换明文密码

修改本地${maven.home}\conf\settings.xml文件:

<server>
	<id>gleam-repoid>
	<username>adminusername>
	<password>{7l9KDIMMpfsHbKcxpOd5Q6ynbyxby2Y0TXkcppp/SDI=}password>
server>

到此,就可以安全地链接Nexus对应的Repository进行发布或下载依赖库了。

该种方式的加密是完全基于本地Maven工具操作,安全性其实并不完美,但是针对于Nexus Repository OSS (免费版) 版本也暂时只能做到这个程度。

商业版Nexus做法

如果公司使用的是收费版Nexus Repository Pro版本,可以用更安全的方式,本地settings.xml直接写nexus提供的密文。
详见Nexus官方文档: http://books.sonatype.com/nexus-book/reference3/security.html#user-token

部分截图如下:
【工具篇】Maven加密Nexus用户密码_第5张图片

你可能感兴趣的:(maven,安全,java,DevOps)