1. 生成RSA密钥对并保存为PEM格式

生成RSA密钥对并保存为PEM格式 学习卡片

任务目标

使用 OpenSSL 生成 2048 位 RSA 密钥对,将私钥和公钥分别保存为 PEM 格式文件,并验证生成文件的格式与内容正确性。

环境要求

需要 OpenSSL 命令行工具(版本 1.1.1 或以上),Linux/macOS 自带或通过包管理器安装,Windows 可安装 OpenSSL 二进制发行版。本案例使用命令行完成,无需编写代码。

实现步骤

在终端中依次执行以下命令:

# 1. 生成 2048 位 RSA 私钥,保存为 PEM 格式
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private_key.pem

# 2. 从私钥中提取公钥,保存为 PEM 格式
openssl pkey -in private_key.pem -pubout -out public_key.pem

# 3. 验证私钥文件格式与内容
openssl pkey -in private_key.pem -text -noout

# 4. 验证公钥文件格式与内容
openssl pkey -pubin -in public_key.pem -text -noout

验证方法与判定标准

执行上述命令后,按以下标准确认生成成功:

  • 文件存在性:当前目录下应生成 private_key.pem 和 public_key.pem 两个文件。
  • 私钥格式:private_key.pem 文件内容以 -----BEGIN PRIVATE KEY----- 开头,以 -----END PRIVATE KEY----- 结尾(PKCS#8 格式)。
  • 公钥格式:public_key.pem 文件内容以 -----BEGIN PUBLIC KEY----- 开头,以 -----END PUBLIC KEY----- 结尾(SubjectPublicKeyInfo 格式)。
  • 密钥长度:第 3、4 步验证命令输出中应包含 Private-Key: (2048 bit) 或 Public-Key: (2048 bit),确认密钥长度为 2048 位。
  • 密钥一致性:第 3 步输出中应包含 modulus: 字段,第 4 步输出中同样包含 modulus: 字段,且两者的十六进制值完全一致,证明公钥与私钥属于同一密钥对。

预期输出示例

第 3 步验证命令的预期输出(截取关键部分):

Private-Key: (2048 bit)
modulus:
    00:ba:...(十六进制模数)
publicExponent: 65537 (0x10001)
...

第 4 步验证命令的预期输出(截取关键部分):

Public-Key: (2048 bit)
modulus:
    00:ba:...(与私钥输出中 modulus 完全相同的十六进制值)
publicExponent: 65537 (0x10001)

常见问题

  • 命令不存在:若提示 openssl: command not found,需先安装 OpenSSL(Ubuntu/Debian 使用 sudo apt install openssl,macOS 使用 brew install openssl)。
  • 文件已存在:若重复执行生成命令,OpenSSL 会直接覆盖同名文件,不会报错,但原密钥将丢失,需注意备份。
  • 权限问题:生成的私钥文件默认权限可能为 644,建议使用 chmod 600 private_key.pem 收紧权限,防止私钥泄露。