一直以来的ssl的各种key很迷惑,公钥、私钥、数字证书,又怎么跟openssl对应起来。
今天花时间了解了一下,大概是这样的:
生成私钥:
openssl genrsa -out privkey.pem 2048
非对称加密使用公钥和私钥两个密钥来加密,那么公钥呢? openssl好像一般是不直接生成公钥的(我也不知道怎么生成),而是根据密钥产生一个证书请求(csr),把这个csr提交给CA,得到数字证书(crt)。其中csr中本身就已经包含了公钥。
csr的生成:
openssl req -new -key privkey.pem -out cert.csr
这个命令可以查看crs的信息,包括其中的公钥
openssl req -in cert.csr -noout -text
CA验证是要钱的,godaddy收49刀/年。我们就自己给自己签名吧:
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
cat privkey.pem 和 cacert.pem 可以看到
privkey.pem 的内容为
-----BEGIN RSA PRIVATE KEY----- …… 私钥内容…… -----END RSA PRIVATE KEY-----
cacert.pem的内容为
—–BEGIN CERTIFICATE—–
……数字证书内容……
—–END CERTIFICATE—–
有些程序需要这两个密钥在同一个文件中,直接cat一下就可以了。
不过这时候也可以一步到位,同时创建私钥和数字证书:
openssl req -new -x509 -keyout lighttpd.pem -out lighttpd.pem -days 365 -nodes