记录一下openssl操作EC的几个小命令 - 知乎
记录一下openssl操作EC的几个小命令 - 知乎
记录一下openssl操作EC的几个小命令
资深码农,新时代农民工,知名大厂待过,在初创公司也干过
网络上面很多的介绍都是针对RSA类型的秘钥的,毕竟RSA使用得太广泛了。EC(椭圆曲线)算法出来的相对晚一些,使用的也相对少一些,但是椭圆曲线的优点有很多。
1、产生私有密匙
openssl ecparam -genkey -name prime256v1 -out privateKey.pem
2、对私有秘钥进行加密保护,此时密码中如果有特殊字符,需要使用引号括起来。
// aes256加密,默认是采用cbc模式加密的
openssl ec -in privateKey.pem -aes256 -passout pass:"123456" -out encKey.pem
// 可以指定其他的加解密方法与模式,写法如下,aes-256-gcm是目前公认比较安全的
openssl ec -in privateKey.pem -aes-256-gcm -passout pass:"123456" -out encKey.pem
说明:我测试使用gcm加密的证书,在查看的时候会报错,不支持。
// 采用des加密,des算法被证明是不安全的,不建议使用
openssl ec -in privateKey.pem -des -passout pass:"123456" -out encKey.pem
注意这一步很容易出错,我花了很长的时间,使用如下的写法没有报错,也没有效果:
openssl ec -in privateKey.pem -passin pass:123456 -out encKey.pem
3、直接查看证书文件内容。
cat privateKey.pem
可以看到密匙的基本信息,如果是加密的EC密匙,内容大概如下,还会显示加密的算法类型。
-----BEGIN EC PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-256-CBC *************
***********************************
***********************************
-----END EC PRIVATE KEY-----
4、查看私有的密匙内容。
// 如下的命令就可以查看私有密匙的具体内容,如果是加密保护的内容,会提示输入密码,只有输入正确的密码才能查看
openssl ec -in privateKey.pem -noout -text
// 也可以直接给出密码,不用等提示后再输入
openssl ec -in encKey.pem -passin pass:"123456" -noout -text
5、从私有密匙导出公匙
openssl ec -in privateKey.pem -pubout -out pubKey.pem
6、查看公钥
openssl ec -in pubKey.pem -pubin -noout -text
7、签名
openssl x509 -req -in cli.csr -extfile cli.conf -extensions req_ext -CA cert.pem -CAkey caPrivKey.pem -days 1825 -out cli-certificate.pem -outform PEM -CAcreateserial -sha256

