前言之前写自己的网站时, 申请过免费的https证书. 最近想在自己本地搭一个, 结果忘了当初证书是怎么来的了. 本来想着去申请个免费的证书, 但想了想, 我只需要在自己本地能使用就行了, 我自己的环境, 那当然是我说了算了. 只要能够将证书构造出来, 安装到本地就可以识别了. 搜了搜, 发现还真的有生成证书的工具. 道理咱都懂, 动手才是王道, 走你.
证书生成以下以我自己的域名hujingnb.cn为例.
随便找个路径, 创建 hujingnb.conf配置文件, 内容如下(内容加了注释, 请自行将注释删掉):
[ req ] default_bits = 2048default_keyfile = server-key.pem// 标识提示的标签名, 就是下面的 [subject]distinguished_name = subject// 指定扩展的标签名req_extensions = req_extx509_extensions = x509_ext// 指定编码string_mask = utf8only [ subject ]// 以下为填写的相关信息 countryName = 国家(跳过即可)countryName_default = CH stateOrProvinceName = 省份(跳过即可)stateOrProvinceName_default = BeiJing localityName = 城市(跳过即可)localityName_default = BeiJing organizationName = 组织(跳过即可)organizationName_default = None commonName = 域名(必填)commonName_default = hujingnb.cn emailAddress = 邮箱(跳过即可)emailAddress_default = hujingnb@qq.com [ x509_ext ] // 使用者密钥标识subjectKeyIdentifier = hash// 授权密钥标识authorityKeyIdentifier = keyid,issuer// 表示要生成的证书是用于终端证书的, TRUE 为 CA 证书, 可下发二级证书 basicConstraints = CA:FALSE// 指明证书用途keyUsage = digitalSignature, keyEncipherment// 标明当前证书使用与哪些域名, 在下面的 alternate_names 标签中subjectAltName = @alternate_names// 证书提交说明nsComment = "generate crt" [ req_ext ] subjectKeyIdentifier = hash basicConstraints = CA:FALSEkeyUsage = digitalSignature, keyEnciphermentsubjectAltName = @alternate_namesnsComment = "generate crt" [ alternate_names ]// 证书可使用的域名列表DNS.1 = hujingnb.cnDNS.2 = *.hujingnb.cn// 还有写其他的参数, 可查看 openssl.cnf 配置文件
然后执行命令:
openssl req -config hujingnb.conf -new -sha256 -newkey rsa:2048 -nodes -keyout hujingnb.key -x509 -days 365 -out hujingnb.crt
提示需要输入一堆参数, 都可以不给. 但是, Common Name 需要指定域名
对以上用到的参数简单解释:
- config: 指明配置文件
- new: 指明生成新的证书
- newkey: 生成新的密钥, 方式为 rsa. 长度为2048
- nodes: 指定密钥不用加密(没懂是什么意思, 但是不指定不能生成证书).
- keyout: 私钥输出文件
- days: 标明证书有效期
- X509: 表示输出证书的格式, 这个我们在配置文件中配过了. (默认是 crt 格式, 我试了, 不加这个参数也 OK)
- out: 证书输出文件
文章插图
然后将证书以及私钥 copy 到你想要的任意位置,
证书安装双击crt证书文件.
文章插图
双击证书, 将证书设置为始终信任. 然后 X 调, 输入密码, 确认修改. 证书安装完成.
文章插图
修改 Nginx 配置OK, 证书的准备工作已经完成了, 现在剩下 nginx 的配置了. 将以下配置加到 nginx 配置文件中:
listen 443 ssl;server_namehujingnb.cn;ssl on;ssl_certificate/Users/hujing/dir/pem/hujingnb.crt;ssl_certificate_key /Users/hujing/dir/pem/hujingnb.key;
请自行修改其中证书以及私钥的文件位置.万事具备, 试验:
文章插图
OK, 完美.
总结不过这样安装, 只能在本地环境访问, 仅供测试使用.
对于在本地环境搭建HTTPS的开发来说, 不用费时费力的申请线上证书, 可模拟线上HTTPS请求. 足矣.
【搭建本地 HTTPS 环境】
推荐阅读
- Windows 10搭建FTP服务器
- 服务器开发程序员必须搞清HTTPS通讯之证书
- 5分钟内搭建你的第一个Python聊天机器人
- 使用阿里云 自己搭建网站
- 将远程服务器上的文件备份到本地的三种工具
- 配置RHEL8本地yum源及DNF简介
- 搭建https难吗?3分钟即可搭建完成,动动手指几个脚本即可,干货
- 彻底搞清HTTPS安全通讯之SSL/TLS加密协议
- Fiddler 抓取 https 请求大全
- CentOS7.3 Linux系统搭建VPN服务器之PPTP