跳至內容

密碼學/使用 OpenSSL 生成金鑰對

來自華夏公益教科書,自由的教科書

下載並安裝 OpenSSL 執行時。如果您使用的是 Windows,請獲取 Cygwin 軟體包。

OpenSSL 可以生成多種型別的公鑰/私鑰對。RSA 是最常見的金鑰對生成型別。[1]

其他流行的生成 RSA 公鑰/私鑰對的方法包括 PuTTYgen 和 ssh-keygen。[2][3][4][5]

生成一個帶有 2048 位私鑰的 RSA 金鑰對

[編輯 | 編輯原始碼]

執行命令: "openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048"[6](以前為“openssl genrsa -out private_key.pem 2048”)

例如

$ openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048
 ....................................................................+++
 ....................................................+++


確保透過執行 chmod go-r private_key.pem 來防止其他使用者讀取您的金鑰。

從 RSA 金鑰對中提取公鑰

[編輯 | 編輯原始碼]

執行命令: "openssl rsa -pubout -in private_key.pem -out public_key.pem"

例如

$ openssl rsa -pubout -in private_key.pem -out public_key.pem
writing RSA key

一個新的檔案 public_key.pem 將被建立,其中包含公鑰。

透過一些加密計算從私鑰檔案中的 prime1 和 prime2 值計算出公鑰相對容易。但是,OpenSSL 已經預先計算了公鑰並將其儲存在私鑰檔案中。因此,此命令實際上不會執行任何加密計算 - 它只是將公鑰位元組從檔案中複製出來,並將這些位元組的 Base64 PEM 編碼版本寫入輸出公鑰檔案。[7]

檢視金鑰元素

[編輯 | 編輯原始碼]

執行命令: "openssl rsa -text -in private_key.pem"

private_key.pem 的所有部分都將列印到螢幕上。這包括模數(也稱為公鑰和 n)、公鑰指數(也稱為 e 和指數;預設值為 0x010001)、私鑰指數以及用於建立金鑰的素數(prime1,也稱為 p,以及 prime2,也稱為 q),一些用於更快執行 RSA 操作的其他變數,以及所有這些資料的 Base64 PEM 編碼版本。[8](所有這些資料的 Base64 PEM 編碼版本與 private_key.pem 檔案相同)。

無密碼登入

[編輯 | 編輯原始碼]

通常,一個人會設定一個自動備份過程,定期將一臺“工作”計算機上的所有內容備份到另一臺“備份”計算機上。

因為這個人希望此過程每晚執行,即使沒有人在這兩臺計算機附近,使用“密碼保護”的私鑰也不起作用 - 這個人希望備份立即進行,而不是等到有人經過並輸入密碼來解鎖私鑰。許多人會生成“沒有密碼的私鑰”。[9]有些人則會生成一個帶密碼的私鑰,然後以某種方式輸入密碼來“解鎖”私鑰,以便每次伺服器重啟時自動工具都可以使用密碼保護的金鑰。[10][3]

進一步閱讀

[編輯 | 編輯原始碼]
華夏公益教科書