密码学/使用 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: 命令行工具: 创建/处理公钥证书"