1. 程式人生 > >下載PGP簽名工具GnuPG並生成相應的祕鑰

下載PGP簽名工具GnuPG並生成相應的祕鑰

  如果我們想將自己的Maven專案釋出到Maven的中央倉庫中,那麼我們得學會使用PGP簽名,因為Maven為了提高整體構建的平水,因而引入了PGP簽名機制。

資源連結

  PGP簽名的官方文件如下:

  PGP的官方下載地址如下:

  GnuPG支援多個作業系統,大家可以選擇合適的去下載,由於我這裡選擇的是windows作業系統,因而我就以該系統的對應軟體版本為例來進行說明。

  在官網上提供的下載地址其實是付費的,但是也有免費版,雖說這些版本不是最新版,但是至少也能用,下面的GnuPG以往的歷史版本的下載地址:

  當然也可以訪問我的碼雲,在碼雲上已經上傳了兩個不同版本的GnuPG,這個大家可以自行選擇使用,下載連結如下:

  在這裡,我使用的版本為:

GnuPG的使用

  安裝該軟體我就不用細說了,該軟體的安裝方式其實是和其它的應用軟體安裝方式是一樣的,所以說對於它的安裝我就不用說明了。

驗證GnuPG是否安裝成功

  在GnuPG安裝完成後,我們可以通過下面的指令來判斷該軟體是否安裝成功,比如說我們可以檢視該軟體所生成的版本號,此時我們在命令列中敲入以下指令:

gpg --version

  此時在命令列中顯示的結果為:

C:\Users\Administrator>gpg --version
gpg (GnuPG) 2.0.30 (Gpg4win 2.3.4)
libgcrypt 1.7
.8 Copyright (C) 2015 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Home: C:/Users/Administrator/AppData/Roaming/gnupg Supported algorithms: Pubkey:
RSA, RSA, RSA, ELG, DSA Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256 Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 Compression: Uncompressed, ZIP, ZLIB, BZIP2

  GnuPG在不同的作業系統中的顯示可能不一樣,在其它的作業系統中,其檢視版本號的指令可能如下:

gpg2 --version

  這裡我也在命令列中進行了敲入,顯示的結果如下:

C:\Users\Administrator>gpg2 --version
gpg (GnuPG) 2.0.30 (Gpg4win 2.3.4)
libgcrypt 1.7.8
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
...

  當我們看到上述資訊時,這就說明我們的GnuPG軟體已經安裝成功,此時我們就可以正常使用了。

生成一個金鑰對

  金鑰對允許您使用GPG簽署工件,並且使用者可以隨後驗證工件已經由您簽署。你可以使用下列命令列生成祕鑰。

gpg --gen-key

  之後我們會檢視到下述資訊。

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection?

  這是讓我們選擇生成何種祕鑰,一般情況下,我們選擇預設的即可,所以說這裡我們直接輸入:1,點選回車鍵。

  之後我們又將會檢視到下述選擇資訊:

Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)

  這時詢問我們是否是型別為(RSA)和鍵的大小為(2048位),此時我們仍然選用的是預設值,點選回車鍵。

  在接下來我們將會看到下述資訊,該資訊是詢問我們祕鑰的有效期,一般情況下,我們選擇的祕鑰有效期是在2年以內,一旦金鑰過期,您就可以擴充套件它,只要您擁有金鑰並因此知道密碼。

Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0)

  此時我將祕鑰的有效期設定為2周,因而在這裡我輸入的是“2w”。

  之後將詢問我們是否確定,資訊如下:

Key is valid for? (0) 2w
Key expires at 01/18/18 15:27:38 中國標準時間
Is this correct? (y/N)

  這裡,我當然是確定了,因而這裡我選擇的是“y”,然後點選回車。

GnuPG needs to construct a user ID to identify your key.

Real name:

  它的意思是說“GnuPG需要構造一個使用者ID來標識您的金鑰。”,我們在“Real name”處輸入自定義的真名,這裡,我輸入的是“zhangzhenyi”,後面又要求我們輸入郵箱賬號等資訊,下面是我輸入的詳細資訊:

Real name: zhangzhenyi
Email address: 1078689276@qq.com
Comment: this is for maven central
You selected this USER-ID:
    "zhangzhenyi (this is for maven central) <[email protected]>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?

  我們可以看到,當上述資訊都輸入完成之後,GnuPG會詢問我們是否變更,此處我們如果想要變更,輸入對應的括號內字母即可,如果想退出,直接輸入“Q”。此時我們確認資訊無誤,因而我們輸入的字母為“O”。

  之後我們會看到下述資訊:

You need a Passphrase to protect your secret key.

  其意思是“你需要一個密碼來保護你的祕密金鑰。”於此同時桌面上還彈出一個長長的視窗,如下:

這裡寫圖片描述

  該視窗很容易自己退出,而一旦退出,我們就會看到下面的資訊,此時我們就只能重來了。

gpg: cancelled by user
gpg: Key generation canceled.

  而我們在輸入密碼時也並非是想輸入啥就輸入啥,其必須得符合相應的格式,那就是必須是十位資訊,而且該資訊必須是字母+(數字或特殊字元),否則的話我們將會看到警告資訊,同時之前的操作還得重來。(⊙o⊙)…萬惡啊!!!

  當我們輸入完成後,點選確定按鈕之後,接下來出現的是驗證密碼操作,如果該操作失敗,繼續重複之前的所有操作,如果輸入正確,則我們將會生成自己的祕鑰,其驗證密碼操作介面如下:

這裡寫圖片描述

  當我們驗證通過後,其顯示的資訊如下:

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: key 1F60EF57 marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2018-01-18
pub   2048R/1F60EF57 2018-01-04 [expires: 2018-01-18]
      Key fingerprint = 868A 26F4 A443 5E44 B7E4  6E3F 6396 3441 1F60 EF57
uid       [ultimate] zhangzhenyi (this is for maven central) <1078689276@qq.com>

sub   2048R/288F9A04 2018-01-04 [expires: 2018-01-18]

檢視我們生成的祕鑰

檢視祕鑰

  檢視祕鑰的指令如下:

gpg2 --list-keys

  當我們在命令列中鍵入該資訊時,我們就可以看到我們的祕鑰資訊了,資訊如下:

C:/Users/Administrator/AppData/Roaming/gnupg/pubring.gpg
--------------------------------------------------------
pub   2048R/1F60EF57 2018-01-04 [expires: 2018-01-18]
uid       [ultimate] zhangzhenyi (this is for maven central) <1078689276@qq.com>

sub   2048R/288F9A04 2018-01-04 [expires: 2018-01-18]

檢視私有密匙

  檢視私有祕鑰的指令如下:

gpg2 --list-secret-keys

  私有祕鑰的檢視結果:

C:/Users/Administrator/AppData/Roaming/gnupg/secring.gpg
--------------------------------------------------------
sec   2048R/1F60EF57 2018-01-04 [expires: 2018-01-18]
uid                  zhangzhenyi (this is for maven central) <1078689276@qq.com>

ssb   2048R/288F9A04 2018-01-04

  好了,至此我們已經成功完成了生成祕鑰的全部操作。