跳至内容

密码学/使用 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]

进一步阅读

[编辑 | 编辑源代码]
华夏公益教科书