OpenSSL RSA 加密/解密 签名/验签 自签名证书
2020-07-04 10:00:00
Commands
生成私钥
openssl genrsa -out key.pem
导出公钥
openssl rsa -in key.pem -pubout -out pubkey.pem
加密
openssl rsautl -encrypt -inkey pubkey.pem -pubin -in plain.txt -out cipher.txt
解密
openssl rsautl -decrypt -inkey key.pem -in cipher.txt -out plain.txt
签名
openssl rsautl -sign -in file -inkey key.pem -out sig
验签
openssl rsautl -verify -in sig -inkey key.pem
自签名证书
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out req.pem
// 下面这个版本不加密且解决Safari正常但Chrome访问NET::ERR_CERT_COMMON_NAME_INVALID
openssl req -x509 -newkey rsa:2048 -nodes -keyout key.pem -addext "subjectAltName = DNS:localhost" -out req.pem
注:
- Mac中的OpenSSL是LibreSSL
- 自签名常会用在内网提供HTTPS服务
- 验签用在支付成功后验证第三方通知的消息
- 现在应该流行 genpkey、pkey、pkeyparam、pkeyutl 相关命令
- 加密分为 对称(加解密使用相同密钥) 和 非对称(加解密使用不同密钥)
- 私钥加密公钥解密是没有意义的,公钥是公开的,很多人持有,达不到加密的意义