如何利用openssl生成自签名ssl证书?

正规的证书需要向CA机构申请,一般流程为:先生成一个私钥,然后用私钥生成证书请求(证书请求里应含有公钥信息),再利用证书服务器的CA根证书来签发证书。但是向CA申请证书通常不免费,我们可以通过openssl自签名的形式生成ssl证书,实现https访问效果,.crt结尾的是证书文件,.key结尾的是密钥文件,.csr结尾的是证书请求文件。

1.创建签发CA根证书的配置文件ext.ini

basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
 
[alt_names]
DNS.1 = www.test.com
DNS.2 = *.test.com

IP.1 = 127.0.0.1
IP.2 = 192.168.127.33

注:alt_names中既可以填域名,也可以填ip地址,根据实际情况,按照上述样式继续添加

 

2.创建CA证书及密钥

openssl req -x509 -newkey rsa:2048 -out MyCA.crt -outform PEM -keyout MyCA.key -days 3650 -verbose -nodes -sha256 

注:运行上述命令后,需要根据提示输入信息,随意填写,但是要记住填的内容

 

3.创建ssl证书密钥及请求文件

openssl req -newkey rsa:2048 -keyout MyServer.key -out MyServer.csr -sha256 -nodes

注:根据提示填写

 

4.签发ssl证书:

openssl x509 -req -CA MyCA.crt -CAkey MyCA.key -in MyServer.csr -out MyServer.crt -days 3650 -extfile ext.ini -sha256 -set_serial 0x1111

 

5.向浏览器中手动导入CA证书

通常浏览器中内置了CA根证书,但是我们的CA证书是利用openssl自己制作的的,所以需要手动导入。以Chrome浏览器为例,我们先点击右上角三个·,然后依次点击‘设置’,‘隐私设置和安全性’,‘安全’,‘管理证书’,‘受信任的根证书颁发机构’,‘导入’,然后将MyCA.crt导入即可,接下来就可以通过浏览器以https方式访问我们的网站了。

posted @ 2021-01-11 14:50  eliwang  阅读(993)  评论(0编辑  收藏  举报