-
Notifications
You must be signed in to change notification settings - Fork 0
Description
version:
$ openssl version
OpenSSL 1.0.2j 26 Sep 2016
创建RSA密钥
$ opnessl genrsa -out fd.key
在目前的版本里,密钥的默认长度是2048位,如果需要1024位或其他长度,可以用:
$ openssl genrsa -out fd.key 1024
如果希望私钥用对称算法进行加密,可以加上-aes128 (-aes192、-aes256),不建议使用DES\3DES\SEED:
$ openssl genrsa -aes128 -out fd.key
查看RSA密钥
$ openssl rsa -text -in fd.key
如果不想输出key,可以用:
$ openssl rsa -text -in fd.key -noout
如果只是想看公钥,可用:
$ openssl rsa -pubout -in fd.key
创建ECDSA密钥
重要:如果可以,放弃RSA,选ECDSA。
目前在TLS web的应用上,主要考虑老古董浏览器的兼容性问题,会用RSA和ECDSA并存的方案。但如果条件允许,最好选择ECDSA。
RSA在2048位的密钥下,性能比ECDSA密钥差,且增加RSA长度增加的性能损耗不是线性的。256位的ECDSA密钥有128密钥用于安全加密上,相对而言,2048位的RSA密钥只有112位是真正用于安全加密的。
区块链项目Hyperledger Fabric里,默认也是用ECDSA secp256r1。
$ openssl ecparam -genkey -name secp256r1 | openssl ec -out ec.key
同样如果希望用对称算法进行加密,可以用:
$ openssl ecparam -genkey -name secp256r1 | openssl ec -out ec.key -aes128
每个密钥,都要选定一个命名曲线,这里用的是 secp256rc(prime256v1),可以用:
$ openssl ecparam -list_curves
获取支持的曲线表。
查看ECDSA密钥
$ openssl ec -text -in ec.key
如果不想输出key,可以用:
$ openssl ec -text -in ec.key -noout
如果只是想看公钥,可用:
$ openssl ec -pubout -in ec.key
是不是感觉和查看RSA密钥的手法一样?其实代码我也是直接copy的。
创建证书签名申请(csr)
$ openssl req -new -key fd.key -out fd.csr
可以用:
$openssl req -text -in fd.csr -noout
检查下你的CSR文件。
如果你想更新一张证书(crt)且不想改变里面的信息,可以用:
openssl x509 -x509toreq -in fd.crt -out fd.csr -signkey fd.key
创建证书(自签名)
当你有了粮票CSR,就可以创建证书了:
$ openssl x509 -req -days 365 -in fd.csr -signkey fd.key -out fd.crt
没办法,因为是自己给自己盖章,所以这里的-signkey
只能用自己的密钥了。
如果你不想扭扭捏捏,先生成csr,在创建crt,这里有一口吞大胖子命令:
$ openssl req -new -x509 -days 365 -key fd.key -out fd.crt
还不过瘾,可以加上-subj
直接跳过交互提示:
$ openssl req -new -x509 -days 365 -key fd.key -out fd.crt -subj "/C=CN/L=xxxx/O=xxxxx/CN=xxxxx"
检查证书
$ openssl x509 -text -in fd.crt -noout
总结上,检查(查看)证书:
$ openssl {op} -text -in xxx -noout
op | 说明 |
---|---|
rsa | 检查rsa证书 |
ec | 检查ECDSA证书 |
req | 检查证书签名申请CSR |
x509 | 检查证书 |