HTTPS 优缺点

优点

  1. HTTPS具有更好的加密性能,避免用户信息泄露;
  2. HTTPS复杂的传输方式,降低网站被劫持的风险
  3. 搜索引擎已经全面支持HTTPS抓取、收录,并且会优先展示HTTPS结果;
  4. HTTPS绿锁表示可以提升用户对网站信任程度;
  5. 可以有效防止山寨、镜像网站等

弊端

  1. 繁重的计算和多次交互天然的影响了访问速度
  2. 网站改用HTTPS以后,由HTTP跳转到HTTPS的方式增加了用户访问耗时
  3. HTTPS涉及到的安全算法会消耗 CPU 资源,需要增加服务器资源(https访问过程需要加解密)

Let’s Encrypt 介绍

官方网站: https://letsencrypt.org/
免费的,自动的,和开放的证书颁发机构

部署客户端

文档: https://letsencrypt.org/docs/client-options/
Certbot 是Let's Encrypt官方推荐的获取证书的客户端,可以帮我们获取免费的Let's Encrypt 证书。Certbot 是支持所有 Unix 内核的操作系统的,个人博客的服务器系统是CentOS 7,这篇教程也是通过在个人博客上启用HTTPS的基础上完成的。

部署过程

基于linux+nginx环境

安装 certbot

yum install certbot

下载证书

certbot certonly --webroot -w /var/www/example/ -d www.example.com -d example.com

这个命令会为 http://example.comhttp://www.example.com 这两个域名生成一个证书,certbot会在/var/www/example中创建.well-known文件夹,这个文件夹里面包含了一些验证文件,certbot 会通过访问http://example.com/.well-known/来验证你的域名是否绑定的这个服务器。如果一切正常证书会自动下载到服务器/etc/letsencrypt/live/

安装证书

修改nginx配置文件server{}

ssl on;
ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/www.example.com/chain.pem;
add_header Strict-Transport-Security "max-age=63072000";

Strict-Transport-Security说明: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security

最后重启nginx是证书生效

证书续期

Certbot 颁发的证书为90天的短期证书, 所以我们需要在90天内为证书续签. Certbot提供自动续签命令.

certbot renew

可以将以上命令添加到crontab中每天运行.以下是Certbot官方提供的crontab配置

0 0,12 * * * python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew 

参考文档

https://letsencrypt.org/docs/
https://certbot.eff.org/docs/