如何利用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方式访问我们的网站了。