一般地,SSL 证书由证书权威机构(CA)签发。但在开发环境中,我们可以使用自签名证书。下面介绍如何使用 OpenSSL 创建私钥和自签名证书。
在 windows 下安装 OpenSSL
虽然 OpenSSL 项目不以二进制形式分发任何代码,但我们可以在wiki上找到非正式的二进制版本,点击下载。
安装完成后,在 cmd 命令行中输入 openssl version 查看版本,验证安装成功。输入 openssl help 可查看相关帮助信息。
创建私钥
在当前目录下创建一个2048位(Bits)、DES 三重加密的 RSA 密钥,存储在 server.enc.key 文件中。
openssl genrsa -des3 -out server.enc.key 2048在创建过程中会要求你输入加密私钥的密码。
去掉私钥密码
我们可以选择去掉私钥的密码。
openssl rsa -in server.enc.key -out server.key去掉时会要求你提供起初的私钥密码。
创建证书签名请求
证书签名请求(Certificate Signing Request)文件用于提交给证书颁发机构,然后证书颁发机构使用其根证书私钥签名就生成了证书公钥文件,也就是颁发给用户的证书。不过这里我们将会使用私钥自签名证书。
下面是创建证书签名请求的命令。
openssl req -new -key server.enc.key -out server.enc.csr如果私钥没有去掉密码,这里同样需要提供私钥密码。创建过程中需要你输入关于自己和公司的详细信息,它们将合并到请求中。
创建自签名证书
创建一个有效期为一年的临时证书。如果私钥没有去掉密码,这里同样需要提供私钥密码。
openssl x509 -req -days 365 -in server.enc.csr -signkey server.enc.key -out server.enc.crt解决浏览器拦截问题
一般可以考虑以下原因:
- 安装了安全软件及其浏览器插件时,需在安全软件的网络设置排除项中添加 localhost。
- 检查浏览器的拦截提示,若在高级或详情中有继续前往等入口时则点击进入即可。若有其它提示,则需要根据具体情况调整服务器设置等,例如需要先关闭 HSTS(HTTP Strict Transport Security)。
- 若果未能成功进入步骤二,则可能需要先将自签名的证书添加到系统的受信任的根证书颁发机构中。如 windows 下可运行 certlm.msc 导入证书。
了解有关 Nginx 的 SSL 连接配置,请点击这里。