记录如何给网站配置 HTTPS
获取免费的 SSL 证书
这个我是从阿里的数字证书管理服务申请的一年免费 SSL 证书。一年可以免费申请 20 张免费证书。
申请好之后,还是在这个页面点击「创建 20 / 20」按钮,创建一个证书,并点击操作栏的「申请证书」正式申请你的证书。
在申请页面中,输入以下几个必填信息(以实际页面为主):
- 证书绑定域名
- 域名验证方式
- 联系人
- 所在地
- 密钥算法
- CSR 生成方式
然后点击下一步,在对应的阿里云DNS控制台添加已生成的 DNS 解析记录。这个一般人家都会帮你生成好,等5分钟左右,回到证书申请页面,点击「验证」即可。
等待验证通过之后,点击「提交审核」即可。
完成上述步骤之后,我们点击证书列表操作栏中的「部署」按钮,跳到「证书部署」页面:
- 选择资源列表-云服务器 ECS
- 在自己的 ECS 服务器上进行部署(点击「部署」按钮)
- 自定义证书路径和私钥路径
- 点击确定之后,就会在你的 ECS 上生成对应的证书及其私钥
如果不知道如何配置,可以点击右上角的「帮助文档」,傻瓜式粘贴复制。
如果在确认之后,一直迟迟没有好,那可能出现了 BUG,我查看了接口之后发现接口报错了,然后登到服务器之后又发现,证书已经OK了。
接下来我们就是需要去配置 Nginx
了。
在配置之前我们需要知道以下几点:
- 确保
Nginx
是已经安装过https
的模块(这个不安装,在配置了 ssl 后重新 reload 也会提示) - 确保 ssl 部分的配置正确
- 可以使用
nginx -t
测试
如果我们当安装 nginx
之初没有安装 ssl
模块,那么需要进到 nginx
的安装包内进行安装:
shell
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
为什么要进入到安装包,是因为
configure
就在安装包内,当然也可以根据路径来安装,都可以的
安装好之后,需要再编译一次:
shell
make
然后这里我们最好是备份已有的 nginx.conf
文件,防止后续操作时被覆盖掉。
shell
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
再然后,复制刚编译生成的配置覆盖原有的配置:
shell
cp ./objs/nginx /usr/local/nginx/sbin/
我们再回到 nginx.conf
中添加 ssl 部分的配置:
conf
server {
listen 443 ssl;
server_name xxxx;
ssl_certificate cert/wenabc.pem;
ssl_certificate_key cert/wenabc.key;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root /home/;
index index.html index.htm;
}
}
最后执行:
shell
ngixn -s reload
大功告成。
踩坑
首先就是没有安装 ssl
模块,导致卡了半天,安装好之后就比较顺利。
第二就是在替换 nginx
二进制文件时,提示原来的程序正在执行,那这个就是需要先 stop
掉当前的 nginx
,在替换之后,重新执行一下 ./nginx
即可。