gpg 密鑰生成、導入、導出、自動輸入密碼
目錄
一、系統環境
二、常用命令(以簽名密鑰為例)
(1)生成密鑰
(2)列出私鑰
(3)列出公鑰
(4)導出公鑰
(5)導出私鑰
(6)導入公鑰/私鑰
(7)刪除公鑰
(8)刪除私鑰
三、在對私鑰進行操作時,避免彈窗輸入密碼
(1)直接輸入密碼
(2)將密碼輸入到文件里
這里總結一下 gpg 密鑰的使用,在最新的版本 2.2.x (CentOS 8)相較于之前的 2.0.x (CentOS 7)版本還是有較大的變化的,還有記錄一下自動輸入密鑰密碼的方式,雖然這種方式不提倡(不安全),但是在一些特殊情況下,比如:寫腳本執行 gpg 操作的時候,總不能每次彈框手動輸入命令吧,下面就來總結下。
一、系統環境
CentOS Linux release 8.0.1905 (Core)
注意:CentOS 7 中 gpg 的版本為 2.0.x,CentOS 8 中 gpg 為 2.2.x,還是有很大變化的,比如:簽名密鑰的導入和導出都需要輸入密碼。
二、常用命令(以簽名密鑰為例)
(1)生成密鑰
簡單方式:gpg --generate-key 或?--gen-key : 生成 gpg 密鑰,這種方式有一些參數是默認的;
[root@192 ~]# gpg --gen-key
gpg (GnuPG) 2.2.9; Copyright (C) 2018 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Note: Use "gpg --full-generate-key" for a full featured key generation dialog.
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter)
真實姓名:temp-key
電子郵件地址:temp-key@163.com
您選定了這個用戶標識:
“temp-key
Change (N)ame, (E)mail, or (O)kay/(Q)uit? O
我們需要生成大量的隨機字節。這個時候您可以多做些瑣事(像是敲打鍵盤、移動
鼠標、讀寫硬盤之類的),這會讓隨機數字發生器有更好的機會獲得足夠的熵數。
我們需要生成大量的隨機字節。這個時候您可以多做些瑣事(像是敲打鍵盤、移動
鼠標、讀寫硬盤之類的),這會讓隨機數字發生器有更好的機會獲得足夠的熵數。
gpg: 密鑰 AB38BACE635A064C 被標記為絕對信任
gpg: revocation certificate stored as '/root/.gnupg/openpgp-revocs.d/6C8A15CECD3DCC2741A7C590AB38BACE635A064C.rev'
公鑰和私鑰已經生成并經簽名。
pub rsa2048 2020-07-27 [SC] [有效至:2022-07-27]
6C8A15CECD3DCC2741A7C590AB38BACE635A064C
uid temp-key
sub rsa2048 2020-07-27 [E] [有效至:2022-07-27]
[root@192 ~]#
詳細的方式:gpg?--full-gen-key 或 --full-generate-key : 生成gpg密鑰,有詳細的配置參數;
[root@localhost ~]# gpg --full-generate-key
gpg (GnuPG) 2.2.9; Copyright (C) 2018 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
請選擇您要使用的密鑰種類:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (僅用于簽名)
(4) RSA (僅用于簽名)
您的選擇? 4
RSA 密鑰長度應在 1024 位與 4096 位之間。
您想要用多大的密鑰尺寸?(2048)
您所要求的密鑰尺寸是 2048 位
請設定這把密鑰的有效期限。
0 = 密鑰永不過期
密鑰的有效期限是?(0) 0
密鑰永遠不會過期
以上正確嗎?(y/n)y
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter)
真實姓名:Search2016
電子郵件地址:Search2016@163.com
注釋:Search2016
您選定了這個用戶標識:
“Search2016 (Search2016)
更改姓名(N)、注釋(C)、電子郵件地址(E)或確定(O)/退出(Q)?O
我們需要生成大量的隨機字節。這個時候您可以多做些瑣事(像是敲打鍵盤、移動
鼠標、讀寫硬盤之類的),這會讓隨機數字發生器有更好的機會獲得足夠的熵數。
gpg: 密鑰 894EC1384177F643 被標記為絕對信任
gpg: directory '/root/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/root/.gnupg/openpgp-revocs.d/00BF891AC03B546DE9FCEDDC894EC1384177F643.rev'
公鑰和私鑰已經生成并經簽名。
請注意這把密鑰還不能用來加密,您必須先用“--edit-key”指令
生成用于加密的子鑰。
pub rsa2048 2020-07-26 [SC]
00BF891AC03B546DE9FCEDDC894EC1384177F643
uid Search2016 (Search2016)
[root@localhost ~]#
(2)列出私鑰
gpg -K 或 --list-secret-keys : 查看私鑰,參數后面沒有指定私鑰,則輸出所有私鑰;
[root@192 ~]# gpg -K
/root/.gnupg/pubring.kbx
------------------------
sec rsa2048 2020-07-27 [SC]
8AC0AB86C34ADC6ED110A5A9E6730F4374866065
uid [ 絕對 ] Search2016 (Search2016)
(3)列出公鑰
gpg -k 或 --list-public-keys : 查看公鑰,參數后面沒有指定公鑰,則輸出所有公鑰;
[root@192 ~]# gpg -k
/root/.gnupg/pubring.kbx
------------------------
pub rsa2048 2020-07-27 [SC]
8AC0AB86C34ADC6ED110A5A9E6730F4374866065
uid [ 絕對 ] Search2016 (Search2016)
(4)導出公鑰
gpg -a -o public-file.key --export keyId : 導出公鑰keyId 到 文件 public-file.key中;
其中:
-a 為 --armor 的簡寫,表示密鑰以ASCII的形式輸出,默認以二進制的形式輸出;
-o 為 --output 的簡寫,指定寫入的文件;
[root@192 ~]# gpg -a -o public-file.key --export 8AC0AB86C34ADC6ED110A5A9E6730F4374866065
(5)導出私鑰
gpg -a -o private-file.key --export-secret-keys keyId :?導出私鑰 keyId 到文件 private-file.key中,導出的時候需要輸入密鑰密碼;
其中,導出私鑰需要輸入保護私鑰的密碼;
[root@192 ~]# gpg -a -o private-file.key --export-secret-keys 8AC0AB86C34ADC6ED110A5A9E6730F4374866065
(6)導入公鑰/私鑰
gpg --import public-file.key / private-file.key : 導入公鑰或私鑰,其中,導入私鑰需要輸入保護私鑰的密碼;
[root@192 ~]# gpg --import public-file.key
gpg: 密鑰 E6730F4374866065:公鑰“Search2016 (Search2016)
gpg: 合計被處理的數量:1
gpg: 已導入:1
[root@192 ~]# gpg -k
/root/.gnupg/pubring.kbx
------------------------
pub rsa2048 2020-07-27 [SC]
8AC0AB86C34ADC6ED110A5A9E6730F4374866065
uid [ 未知 ] Search2016 (Search2016)
[root@192 ~]# gpg --import private-file.key
gpg: 密鑰 E6730F4374866065:“Search2016 (Search2016)
gpg: 密鑰 E6730F4374866065:私鑰已導入
gpg: 合計被處理的數量:1
gpg: 未改變:1
gpg: 讀取的私鑰:1
gpg: 導入的私鑰:1
[root@192 ~]#
(7)刪除公鑰
gpg?--delete-keys keyId : 刪除公鑰;
[root@192 ~]# gpg --delete-keys 6C8A15CECD3DCC2741A7C590AB38BACE635A064C
(8)刪除私鑰
gpg --delete-secret-keys : 刪除私鑰;
[root@192 ~]# gpg --delete-secret-keys 6C8A15CECD3DCC2741A7C590AB38BACE635A064C
三、在對私鑰進行操作時,避免彈窗輸入密碼
gpg 在新的版本中,在對私鑰進行操作的時候(簽名、導入等)需要輸入密鑰的密碼,但是有時候我們并不希望彈框輸入密碼,更希望是通過腳本等方式執行 gpg 的一些操作,方法如下:
(1)直接輸入密碼
gpg --import? --pinentry-mode?loopback --batch?--passphrase password? private-file.key
[root@localhost ~]# gpg --import --pinentry-mode loopback --batch --passphrase 123456 private-file.key
gpg: 密鑰 E6730F4374866065:“Search2016 (Search2016)
gpg: 密鑰 E6730F4374866065:私鑰已導入
gpg: 合計被處理的數量:1
gpg: 未改變:1
gpg: 讀取的私鑰:1
gpg: 導入的私鑰:1
[root@localhost ~]#
(2)將密碼輸入到文件里
gpg --import? --pinentry-mode?loopback --batch?--passphrase-file password-file? private-file.key
[root@localhost ~]# gpg --import --pinentry-mode loopback --batch --passphrase-file password-file private-file.key
gpg: 密鑰 E6730F4374866065:“Search2016 (Search2016)
gpg: 密鑰 E6730F4374866065:私鑰已導入
gpg: 合計被處理的數量:1
gpg: 未改變:1
gpg: 讀取的私鑰:1
gpg: 導入的私鑰:1
[root@localhost ~]#
文件? password-file 第一行為設置的密碼,這兩種方式都不提倡使用,如果真要使用建議使用第二中。
Linux
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。