发布jar包到maven中央仓库之gpg密钥对

系列完整文章参考:发布jar包到maven中央仓库系列目录

发布jar包到maven中央仓库中,有一个生成gpg密钥对的操作,这里简单介绍下密钥的生成以及我对为啥要使用这个密钥对的理解。

生成gpg密钥对需要下载相应的gpg工具。我这里是mac的环境。直接使用brew安装(其他环境百度一下很多)

brew install gpg

生成gpg密钥

gpg --gen-key

根据提示输入用户名,邮箱,之后输入o回车确定

接下来需要输入一个密码。这个密码会在上传到maven的时候用到,需要记住,回车之后密钥就生成了。


图中我打码的部分就是生成的公钥id,我们复制他,接下来我们需要把这个公钥上传到服务器,使用如下命令

gpg --keyserver hkp://pool.sks-keyservers.net --send-keys xxxx

至此,我们gpg密钥对的部分就完成了。

假如我们生成一个密钥对之后,忘记密钥对的公钥id怎么办呢?我们可以使用这个命令查看

gpg --list-keys

如何验证我们的公钥已经发送到服务器成功了呢?使用下方命令检验

gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys xxxx

接下来说说我对使用gpg密钥的理解。因为我一直有个疑问,gpg密钥的作用是什么,看网上的资料是说,防止你的jar包被篡改,但是我的疑问是,gpg密钥谁都可以生成,上传jar包的时候也没有指定说绑定哪个gpg密钥,那么他是怎么做到防止jar包被篡改的呢?别人也可以在其他电脑上自己生成一个密钥然后做上传操作。带着这个疑问在网上找了半天也没有找到答案。后来我好像想通了。我的理解是:gpg密钥的作用防止jar包被篡改只是在数据层防止中间人把你的jar包修改了。有点类似https。因为你再上传你jar包的时候是需要你再你本地maven的配置文件中配置sonatype的用户名跟密码,所以你的包只能你自己上传。但是为了避免中间人攻击,所以会使用gpg在你上传的时候对jar进行处理(此处我暂时这么理解),maven中央仓库在接受到你上传的jar包之后会用gpg公钥去验证这个jar包是不是还是你上传的jar包,还是说被别人修改过。以此来做到防篡改。


支付宝搜索:344355 领取随机红包

如果文章对您有帮助,欢迎给作者打赏