使用OpenSSL CLI生成secp256r1 DER格式密钥对时加载密钥失败
解决OpenSSL生成secp256r1密钥对时“无法加载密钥”的问题
我之前也碰到过一模一样的报错!问题出在你第一条命令生成的私钥文件格式上:openssl ecparam -genkey默认会生成包含EC参数集+私钥的组合DER文件,而openssl ec命令默认只期望读取纯私钥的ASN.1结构,所以解析时会触发ASN.1标签错误。
这里有两种简单的解决方法:
方法一:修改第二条命令,兼容带参数的私钥文件
只需要在导出公钥的命令里加上-param_in选项,告诉OpenSSL这个输入文件包含EC参数和私钥:
openssl ec -inform der -in privkey.der -param_in -pubout -outform der -out pubkey.der
方法二:生成纯私钥文件(更推荐)
直接用openssl ec命令生成纯私钥,这样后续导出公钥的命令就不需要额外参数了:
- 生成DER格式的纯私钥:
openssl ec -name prime256v1 -genkey -outform der -out privkey.der
- 导出DER格式的公钥(就是你原来的第二条命令,现在能正常执行了):
openssl ec -inform der -in privkey.der -pubout -outform der -out pubkey.der
如果非要用ecparam命令生成,也可以指定-noout参数生成纯私钥:
# 先生成EC参数文件(可选) openssl ecparam -name prime256v1 -out prime256v1.param # 生成纯私钥(DER格式) openssl ecparam -in prime256v1.param -genkey -noout -outform der -out privkey.der # 再导出公钥 openssl ec -inform der -in privkey.der -pubout -outform der -out pubkey.der
内容的提问来源于stack exchange,提问作者DurandA
相关产品推荐
相关产品推荐

