阅读:8650回复:1
基于 Let' Encrypt 的 Nginx HTTPS 开启指南
1. 背景
开启 HTTPS 有什么好处? - 安全性好。不会被域名劫持,WIFI嗅探 - 速度快,结合 HTTP/2 可以做到多路复用 - 据说谷歌收录有侧重。 Let' Encrypt 是什么? Mozilla 主导的免费 HTTPS 证书。目的为了推动更安全的互联网,和 Mozilla 的价值观完全吻合,让更多人用上 HTTPS。传统的HTTPS证书颁发机构,年费很贵,大约每年100-1000元不等。 主页:https://letsencrypt.org/ 2. Let' Encrypt 证书申请 由于是免费证书,所以也就完全靠程序自助。刚刚推出了更方便的 certbot 程序(https://certbot.eff.org/),网站上有各种操作系统的安装指南。 以 Gentoo 为例,只需要执行一行命令即可完成安装。其他 OS 也有相应的安装包,包名基本都是 certbot,参考上面网站的指南即可。 安装完毕后有就有了 certbot 命令了。 申请证书前需要先确认 a) 申请域名的DNS设置:域名映射的IP必须跟运行certbot的机器是一致的。申请证书时颁发的服务器会通过DNS记录来校验域名所有权。 b) 关闭443端口的服务:certbot会启用443端口来做校验。如果有运行 nginx,则先手工停止 nginx 申请证书执行下面的命令。 # certbot certonly --standalone -d firefox.net.cn -d www.firefox.net.cn 运行结束后,证书会自动保存到 /etc/letsencrypt/live/firefox.net.cn 下。 然后只需要配置 nginx 了 3. nginx https 配置 与一般的HTTP的配置主要会增加或者修改下面这些配置 server { listen 443 ssl http2; # 监听 443 端口也就是默认的 HTTPS 端口 listen [::]:443 ssl http2; # 这条是针对 IPv6 的配置,如果服务器有 IPv6 地址可以添加。 ssl on; ssl_certificate /etc/letsencrypt/live/www.firefox.net.cn/fullchain.pem; # 公开的证书 ssl_certificate_key /etc/letsencrypt/live/www.firefox.net.cn/privkey.pem; # 证书的私钥 }其他的保持原有的配置即可。重启 nginx 就可以使用 https 了。 4. 证书的更新 有可能由于 let's encrypt 免费的特性,所以证书的有效期只有90天。90天后证书就是失效了。一般来讲设置cron,自动renew就可以了 例如在 /etc/cron.d/ 下放置一个脚本 renew-cert @daily root /usr/bin/certbot renew --standalone --pre-hook '/etc/init.d/nginx stop' --post-hook '/etc/init.d/nginx start' >/var/log/renew-cert.log 2>&1--pre-hook 在申请更新证书前执行。即把 nginx 服务停止,把 443 端口释放出来 --post-hook 在证书更新后执行。这里就把刚刚停止的 nginx 服务恢复启动起来。 renew 命令会更新在这个服务器上申请的所有证书,自动判断是否需要更新,不需要更新的证书会自动跳过。 做完这些就可以安心的享受 HTTPS 了。Have fun! 附录. 如何把原来HTTP80端口的访问自动重定向到HTTPS端口? 一般来讲被收录的页面,在搜索引擎里更新比较慢,需要一个过渡时期。 好处是让从搜索引擎或者手工输入网址进入的网友能够自动衔接,无察觉透明式重定向。 直接上代码 server { listen 80; listen [::]:80; server_name firefox.net.cn www.firefox.net.cn; rewrite ^(.*) https://www.firefox.net.cn$1 permanent; } |
|
1楼#
发布于:2016-08-08 14:44
用webroot模式来获取/更新证书感觉更好些,不需要中断服务
|
|