创建ssl key

一直以来的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
updatedupdated2022-02-222022-02-22