Openssl ECDSA:私钥密码

问题描述 投票:0回答:3

我是 Openssl 的新手,我已经生成了私钥 myprivatekey.pem 和公钥 mypublickey.pem,其中:

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

和我的公钥:

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

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

security encryption openssl ecdsa
3个回答
20
投票

似乎

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


6
投票

虽然

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
在命令行上指定密码。


0
投票

我认为所提供的响应不是安全创建加密私钥的正确方法。更安全的方法如下:

首先使用ecparam命令创建

EC参数,如下

openssl ecparam -out ecparam.pem -name prime256v1

然后使用生成的参数使用

genpkey
命令创建加密密钥

openssl genpkey -paramfile ecparam.pem -out private-key.pem -pass pass:"123456"
© www.soinside.com 2019 - 2024. All rights reserved.