如何用OpenSSL 3生成符合旧格式的RSA PEM密钥文件?
解决OpenSSL 3.0生成旧格式RSA私钥的问题
核心原因
OpenSSL 3.0默认生成的是PKCS#8格式私钥(标识为-----BEGIN PRIVATE KEY-----),而你的应用依赖的是旧版PKCS#1格式的RSA私钥(标识为-----BEGIN RSA PRIVATE KEY-----),这是格式不兼容的根本原因。
两种可行解决方案
方案1:直接生成PKCS#1格式私钥(兼容旧命令)
尽管genrsa在OpenSSL 3.0中被标记为弃用,但仍可正常执行并直接生成符合要求的旧格式密钥:
openssl genrsa -out myFile.pem 2048
注:命令末尾可指定密钥长度(如2048/4096),不指定则默认生成2048位密钥。执行时会弹出弃用警告,但不影响最终生成的密钥格式。
方案2:用genpkey生成后转换为PKCS#1格式
如果想遵循官方推荐使用genpkey,可分两步完成:先生成PKCS#8格式密钥,再转换为目标格式:
- 生成PKCS#8格式的RSA私钥:
openssl genpkey -algorithm RSA -out temp.pem
- 通过
rsa命令转换为PKCS#1格式:
openssl rsa -in temp.pem -out myFile.pem
转换完成后,myFile.pem即为带RSA标识的旧格式密钥,可删除临时文件temp.pem。
格式验证
生成或转换完成后,可通过以下命令快速确认格式是否正确:
head -n 1 myFile.pem
若输出为-----BEGIN RSA PRIVATE KEY-----,则说明格式符合要求。
内容的提问来源于stack exchange,提问作者nullromo
相关产品推荐
相关产品推荐

