Openssl ECDSA:私钥密码

elp*_*zio 4 security encryption openssl ecdsa

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

openssl ecparam -genkey -name secp160k1 -noout -out myprivatekey.pem
Run Code Online (Sandbox Code Playgroud)

和我的公钥:

openssl -ec  -in myprivatekey.pem -pubout -out mypublickey.pem
Run Code Online (Sandbox Code Playgroud)

我接下来要做的是用密码私钥加密我的ecdsa并为我的公钥发出认证请求,谢谢你的帮助.

Afr*_*ndr 10

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

openssl ec -in myprivatekey.pem -out myprivatekey_encrypted.pem -aes256
Run Code Online (Sandbox Code Playgroud)

相比之下genrsa,需要额外的步骤,但这基本上做同样的事情.


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

openssl req -new -sha256 -key myprivatekey.pem -out mycertrequest.pem
Run Code Online (Sandbox Code Playgroud)

然后,您可以获取结果mycertrequest.pem并将其发送给CA进行签名.


编辑:

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

openssl ecparam -genkey -name secp256k1 | openssl ec -aes256 -out privatekey.pem
Run Code Online (Sandbox Code Playgroud)

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


g.r*_*ket 6

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

openssl genpkey -algorithm ec -pkeyopt ec_paramgen_curve:secp160k1 -aes-256-cbc -out myprivatekey_encrypted.pem
Run Code Online (Sandbox Code Playgroud)

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

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