Openssl ECDSA:私钥密码

Posted

技术标签:

【中文标题】Openssl ECDSA:私钥密码【英文标题】:Openssl ECDSA : private key passphrase 【发布时间】:2016-08-26 10:02:57 【问题描述】:

我是 Openssl 的新手,我生成了一个私钥 myprivatekey.pem 和一个公钥 mypublickey.pem:

openssl ecparam -genkey -name secp160k1 -noout -out myprivatekey.pem

和我的公钥:

openssl -ec  -in myprivatekey.pem -pubout -out mypublickey.pem

接下来我要做的是用密码私钥加密我的 ecdsa,并为我的公钥提出认证请求,感谢您的帮助。

【问题讨论】:

Stack Overflow 是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super User 或Unix & Linux Stack Exchange 会是一个更好的提问地方。另见Where do I post questions about Dev Ops?。 【参考方案1】:

ecparam 似乎没有用于加密生成的密钥的内置选项。相反,您可以简单地执行以下操作:

openssl ec -in myprivatekey.pem -out myprivatekey_encrypted.pem -aes256

genrsa相比,需要一个额外的步骤,但这基本上是做同样的事情。


现在就证书请求而言,无论使用何种类型的私钥,该命令都几乎相同:

openssl req -new -sha256 -key myprivatekey.pem -out mycertrequest.pem

然后,您可以将生成的 mycertrequest.pem 发送到 CA 进行签名。


编辑:

如果您担心将未加密的私钥写入磁盘,您可以像这样一步完成密钥的生成和加密:

openssl ecparam -genkey -name secp256k1 | openssl ec -aes256 -out privatekey.pem

这会生成一个 P-256 密钥,然后提示您输入密码。然后使用 AES256 对密钥进行加密并保存到 privatekey.pem

【讨论】:

【参考方案2】:

虽然ecparam 没有加密生成的密钥的选项,但genpkey 可以生成ECC 私钥并且有这样的选项:

openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:secp160k1 -aes-256-cbc -out myprivatekey_encrypted.pem

-aes-256-cbc 选项指定对其进行加密(使用 aes-256-cbc;其他选项可用于不同类型的加密)。

您可以通过-passin pass:password-passin file:mypassword.pass 在命令行中指定密码。

【讨论】:

以上是关于Openssl ECDSA:私钥密码的主要内容,如果未能解决你的问题,请参考以下文章

生成 256 位 ECDSA 私钥

如何将 OpenSSL ECDSA 密钥加载到 C# 中?

组合 ECDSA 密钥

从 ECDSA 公钥生成比特币地址

使用OpenSSL生成证书

如何为使用 OpenSSL 创建客户端证书指定 CA 私钥密码