SSL 证书

SSL 证书

自签证书

1.首先要生成服务器端的私钥(key文件):

1
openssl genrsa -des3 -out server.key 2048 
  • genrsa——使用RSA算法产生私钥
  • -des3——使用des3算法对私钥进行加密(以忽略)
  • -out——输出文件的路径
  • 2048——指定私钥长度

server.key是密钥文件名,为了生成这样的密钥,需要一个至少四位的密码。可以通过以下方法去除server.key中的密码。

1
openssl rsa -in server.key -out server.key 

此时server.key就是没有密码的版本了。

2.生成根证书签发申请文件(csr文件)

使用 RSA私钥生成 CSR 签名请求。

1
openssl req -new -key server.key -out server.csr 
  • req——执行证书签发命令
  • -new——新证书签发请求
  • -key——指定私钥路径
  • -out——输出的csr文件的路径

需要依次输入国家,地区,组织,email。最重要的是common name,可以写你的名字或者域名。如果为了https申请,这个必须和域名吻合,否则会引发浏览器警报。生成的csr文件交给CA签名后形成服务端自己的证书。 

3.自签发根证书(cer文件)

CSR文件必须有CA的签名才可形成证书,这里说下怎么自己做CA。

1
openssl req -new -x509 -key server.key -out ca.crt -days 3650 
  • req——执行证书签发命令
  • -x509——生成x509格式证书
  • -days——证书的有效期(天)
  • -key——指定私钥路径
  • -out——输出的crt文件的路径

生成的ca.crt文件是用来签署上面的server.csr文件。

4.使用根证书签发服务端证书

1
openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
  • -CA——指定CA证书的路径
  • -CAkey——指定CA证书的私钥路径
  • -CAcreateserial——表示创建证书序列号文件(即上方提到的serial文件),创建的序列号文件默认名称为-CA,指定的证书名称后加上.srl后缀

最后生成了私用密钥:server.key和自己认证的SSL证书:server.crt

证书合并:

1
cat server.key server.crt > server.pem

5.参考

linux下生成https的crt和key证书

OpenSSL 公钥、私钥以及自签名证书