密碼學/Generate a keypair using OpenSSL
外觀
< 密码学
下載並安裝OpenSSL:OpenSSL。如果使用Windows作業系統,從這裡下載[1]。
OpenSSL可以生成幾種公鑰/私鑰對。RSA時最常用的。[1]
也可以用PuTTYgen或ssh-keygen生成RSA公鑰/私鑰對[2][3]
使用2048位私鑰生成RSA密鑰對
[編輯]執行命令: "openssl genpkey -algorithm RSA -out private_key.pem -pkeyopt rsa_keygen_bits:2048"[4] (以前是 「openssl genrsa -out private_key.pem 2048」)
從RSA密鑰對抽取公鑰
[編輯]執行命令: "openssl rsa -pubout -in private_key.pem -out public_key.pem"
該命令只是抽取出存放在私鑰文件中的公鑰,並用Base64 PEM編碼後寫入公鑰文件中。[5]
查看密鑰
[編輯]執行命令: "openssl rsa -text -in private_key.pem"
顯式內容包括:[6]
- modulus (也稱作public key與 n)
- public exponent (也稱作 e 與 exponent; 預設值是 0x010001)
- private exponent
- 兩個質數用於創建密鑰。
- prime1,稱作p
- prime2,稱作q
- exponent1 等於d mod (p − 1)。
- exponent2 等於d mod (q − 1)。
- coefficient 是CRT係數 q–1 mod p。
把BASE64編碼的.pem文件解碼為二進制文件:
openssl base64 -d -in private_key.pem -out private_key_bin.pem
無口令的登錄
[編輯]生成無口令保護的私鑰。[7] 也可以生成有口令保護的私鑰,每次系統啟動時自動輸入口令獲取私鑰。[8][3]
進一步閱讀
[編輯]- ↑ Key Generation
- ↑ Michael Stahnke. "Pro OpenSSH". p. 247.
- ↑ 3.0 3.1 "SourceForge.net Documentation: SSH Key Overview"
- ↑ "genpkey(1) - Linux man page"
- ↑ "Public – Private key encryption using OpenSSL"
- ↑ "OpenSSL 1024 bit RSA Private Key Breakdown"
- ↑ "DreamHost: Personal Backup".
- ↑ Troy Johnson. "Using Rsync and SSH: Keys, Validating, and Automation".
- en:Internet_Technologies/SSH describes how to use "ssh-keygen" and "ssh-copy-id" on your local machine so you can quickly and securely ssh from your local machine to a remote host.
- "OpenSSL: Command Line Utilities: Create / Handle Public Key Certificates"