1. 生成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收紧权限,防止私钥泄露。