使用GnuPG对文件进行数字签名,gnupg文件数字签名


  • 为什么要进行数字签名
  • 进行数字签名
    • 签名语句解析
    • 验证签名文件
    • 分发公钥

为什么要进行数字签名

  按照Maven的要求,我们需要对即将要上传的构件进行数字签名,下面是Maven官网的原话:

  为了提高中央Maven存储库的质量,我们要求您为所有的构件(除了校验和之外的所有文件)提供PGP签名,并将您的公钥分发给一个密钥服务器。


进行数字签名

  要为任何文件创建一个ASCII格式的签名,请运行以下gpg命令:

gpg2 -ab ChainTable.java

  之后GnuPG会弹出密码窗口,让我们输入我们相应的密码,如下图:

  当我们输入完成之后,点击【OK】按钮,即可看到我们对于ChainTable.java文件进行数字签名的结果。如下:

C:\Users\Administrator\Desktop\chainTable>gpg2 -ab ChainTable.java

You need a passphrase to unlock the secret key for
user: "zhangzhenyi (this is for maven central) <1078689276@qq.com>"
2048-bit RSA key, ID 1F60EF57, created 2018-01-04

  此时我们会在被签名的文件ChainTable.java同级发现新生成了一个签名文件,如下:

  如上图所示,其中.asc文件是ChainTable.java文件的签名文件,您需要将它与主文件一起分发,以便其他人可以使用您的公钥来验证主文件。


签名语句解析

  -a选项告诉gpg创建ASCII输出输出,-b选项告诉gpg要做一个分离的签名,ChainTable.java是被签名的文件。如果您的私钥有密码,您将会被要求。如果没有密码,所有需要伪造工件签名的人都是您的私钥。密码短语是一个额外的保护级别。


验证签名文件

  验证签名文件的指令如下:

gpg2 --verify ChainTable.java.asc

  验证的结果如下:

C:\Users\Administrator\Desktop\chainTable>gpg2 --verify ChainTable.java.asc
gpg: assuming signed data in 'ChainTable.java'
gpg: Signature made 01/04/18 16:31:22 中国标准时间 using RSA key ID 1F60EF57
gpg: Good signature from "zhangzhenyi (this is for maven central) <1078689276@qq
.com>" [ultimate]

  在签名的结果中,我们可以看到这样的信息“Good signature”,它的意思是“良好的签名”,说明这个是原版的文件,该文件并没有经过他人私自篡改。如果我们仔细的看一下签名的验证结果,我们不难发现其中显示了我们对于原签名文件的文件名全称,如“ChainTable.java”,签名的时间,如:“01/04/18 16:31:22 中国标准时间”,RSA(公钥)的ID为:“1F60EF57”。


分发公钥

  由于其他人需要您的公钥来验证您的文件,所以您必须将您的公钥分发给一个密钥服务器:

gpg2 --keyserver hkp://pool.sks-keyservers.net --send-keys 1F60EF57

  分发的结果:

C:\Users\Administrator\Desktop\chainTable>gpg2 --keyserver hkp://pool.sks-keyser
vers.net --send-keys 1F60EF57
gpg: sending key 1F60EF57 to hkp server pool.sks-keyservers.net

  keyserver参数标识目标密钥服务器地址并使用——send-key是您想要分发的密钥的关键字。您可以通过列出公钥来获取您的keyid。一旦提交给一个密钥服务器,您的公钥将与其他密钥服务器同步。

  现在,其他人可以将您的公钥从密钥服务器导入本地机器:

gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 1F60EF57
版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.csdn.net/ZZY1078689276/article/details/78972850

相关内容