See You Again

从http切换到https

近几年整个行业都在推动 https 协议的普及,主要是 https 在安全、隐私、体验方面的优势。看了一下,现在个人站点升级到 https 的成本几乎为零(不用花钱买证书),因此趁着这股风给自己的站点也升级一下。

不用买证书主要是这个工具 Let’s Encrypt,一些行业大佬共同创建的免费证书中心(Certification Authority,CA),可以直接给你的站点颁发受信任的证书,由非盈利组织运营。他们还开发了自动化工具 certbot帮助你快速申请,很不错。

申请证书

运行下面的命令,首先安装 certbot 工具,然后进入一个命令交互界面,它会询问你要申请的域名(不支持通配)、你的邮箱、网站根目录等信息。certbot 会根据这些信息在你的网站根目录下创建文件 /.well-known/acme-challenge/some-file,并通过域名去访问,以确保这个域名的所有者是你。这个思想有点类似 google 搜索后台的站点认证,所以你要确保这个路径是可以访问的。

  1. yum install certbot
  2. certbot certonly

成功后就会得到下面的提示,真是超级简单啊。注意这个证书只有三个月有效期,不过可以通过脚本自动续期。

  1. IMPORTANT NOTES:
  2. - Congratulations! Your certificate and chain have been saved at
  3. /etc/letsencrypt/live/www.xingzx.org/fullchain.pem. Your cert will
  4. expire on 2017-03-04. To obtain a new or tweaked version of this
  5. certificate in the future, simply run certbot again. To
  6. non-interactively renew *all* of your certificates, run "certbot
  7. renew"
  8. - If you like Certbot, please consider supporting our work by:
  9. Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
  10. Donating to EFF: https://eff.org/donate-le

切换协议

下面就是改 nginx 配置了,把 http 请求也重定向到 https 地址:

  1. server {
  2. listen 80;
  3. server_name xingzx.org;
  4. location / {
  5. return 301 https://$server_name$request_uri;
  6. }
  7. }

https 的配置,主要是使用上面生成的证书文件:

  1. server {
  2. listen 443 ssl;
  3. ssl_certificate /etc/letsencrypt/live/www.xingzx.org/fullchain.pem;
  4. ssl_certificate_key /etc/letsencrypt/live/www.xingzx.org/privkey.pem;
  5. }

重启 nginx 就可以了。

证书自动续期

首先模拟执行一下,这里有一个坑,你必须确保这个 http 协议的资源 http://xingzx.org/.well-known/acme-challenge/some-file 可以访问,因为它是通过这个资源路径判断你是不是站长的,而不是 https 的地址。

  1. certbot renew --dry-run

加入定时任务执行,官方推荐每天检查两次:

  1. 30 0,12 * * * certbot renew --quiet --renew-hook "/sbin/nginx -s reload"

大功告成,差不多半个下午就可以一劳永逸的解决安全性问题了。

2018-01-22 喜欢

Copyright © 2015-2018 转载请注明出处

回到顶部 ↑