密碼學/使用 OpenSSL 生成金鑰對
下載並安裝 OpenSSL 執行時。如果您使用的是 Windows,請獲取 Cygwin 軟體包。
OpenSSL 可以生成多種型別的公鑰/私鑰對。RSA 是最常見的金鑰對生成型別。[1]
其他流行的生成 RSA 公鑰/私鑰對的方法包括 PuTTYgen 和 ssh-keygen。[2][3][4][5]
執行命令: "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 來防止其他使用者讀取您的金鑰。
執行命令: "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]
- ↑ 金鑰生成
- ↑ Michael Stahnke. "Pro OpenSSH". p. 247.
- ↑ a b "SourceForge.net 文件: SSH 金鑰概述"
- ↑ 網際網路技術/SSH § 建立 SSH 金鑰
- ↑ "如何在 Ubuntu 20.04 上設定 SSH 金鑰".
- ↑ "genpkey(1) - Linux 手冊頁"
- ↑ "使用 OpenSSL 的公鑰 - 私鑰加密"
- ↑ "OpenSSL 1024 位 RSA 私鑰分解"
- ↑ "DreamHost: 個人備份".
- ↑ Troy Johnson. "使用 Rsync 和 SSH: 金鑰、驗證和自動化".
- 網際網路技術/SSH 描述瞭如何在本地計算機上使用“ssh-keygen”和“ssh-copy-id”,以便您可以快速安全地從本地計算機 ssh 到遠端主機。
- "OpenSSL: 命令列工具: 建立/處理公鑰證書"