准备
记录下部署免费 https 的过程,使用 Let’s Encrypt 的免费证书
下载自动安装脚本 `wget https://dl.eff.org/certbot-autochmod a+x certbot-auto`
安装
执行脚本./certbot-auto –nginx
这里会下载一些东西,让后让你选择你需要加 https 的域名,这个域名是在 nginx.conf 中配置的 server 中读取到的。注意选择的域名只能是备案过的那个域名。因为这个脚本会到 DNS 服务器去查这个域名对应的 ip 服务器。对不上也是不会给颁发证书的。
执行成功后,会让你选择是否把 http 的请求重定向到 https。直接选择 2 就行
到这里已经配置成功了,访问下网站就可以看效果了。点击那个锁还可以看到关于证书的详细信息
总结
其实这脚本就是相当于一键安装包,帮你申请 https 证书,然后下载到服务器存放,然后在把证书配置到 nginx.conf 里边。打开 nginx.conf 就能看到新增的配置信息。
listen 443 ssl http2; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
# Redirect non-https traffic to https
if ($scheme != “https”) {
return 301 https://$host$request_uri;
#该状态代码 301 告诉浏览器(和搜索引擎)这是永久重定向。这使浏览器记住重定向,以便下次访问时,浏览器将在内部进行重定向
}# managed by Certbot
}
附
由于 Let’s Encrypt 这个证书 90 天后就过期了,可以使用 cron 做一个定时任务,因为我这个证书是 18 号申请的,所以每个月的 19 号就执行一次,执行 crontab - e 后会进入个文件输入 0 0 19 * * ./path/to/certbot-auto renewcrontab - e 的五个参数分别代表,分钟、小时、天、月、周。
参考
https://certbot.eff.org/lets-encrypt/centos6-nginxhttps://bjornjohansen.no/redirect-to-https-with-nginxhttp://nginx.org/en/docs/http/ngx_http_core_module.html