下載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
好了,至此我們已經成功完成了生成祕鑰的全部操作。