为 Ghost 博客添加 HTTPS
如今很多网站都支持 HTTPS 访问了,HTTPS 可以保证用户在访问的过程中信息不会轻易被截获。通常来说,SSL 证书分为三大类,他们的安全性是递增的,当然价格和安全系数成正比。
SSL 证书类型
如今很多网站都支持 HTTPS 访问了,HTTPS 可以保证用户在访问的过程中信息不会轻易被截获。通常来说,SSL 证书分为三大类,他们的安全性是递增的,当然价格和安全系数成正比。
- DV (Domain Validation Certificate),DV 证书适合个人网站使用,申请证书时,CA 只验证域名信息。几分钟之内就能签发。个人博客、网站,选择 DV 证书即可;
- OV ( Organization Validation Certificate),OV 证书需要认证公司的信息。1-2天签发。企业网站,但还不想付费,可以选择 DV 证书; 综合性的企业门户网站,可以选择 OV 证书;
- EV ( Extended Validation Certificate),EV 证书的认证最为严格,一般会要求提供纸质材料。签发时间也较久。金融、电商企业网站,选择 EV 证书。
免费的 SSL 证书 - Let's Encrypt
对于我的博客来说,只需要 DV 等级的证书就够了,使用 Let's Encrypt 就能很好的满足我的需求。Let's Encrypt 是国外一个公共的免费 SSL 项目,由 Linux 基金会托管,由 Mozilla、思科、Akamai、IdenTrust 和 EFF 等组织发起,目的就是向网站自动签发和管理免费证书,以便加速互联网由 HTTP 过渡到 HTTPS。Let's Encrypt 的有效期为 90 天,到期后需要续期就可以继续使用了。
如何使用?
因为我的博客使用 Docker 部署在 CentOS 7 上,而 CentOS 7 默认的环境也正好能满足 Let's Encrypt 对环境的要求。下面我就简单说下如何配置 Let's Encrypt。
安装 Let's Encrypt
首先要安装 git
yum install git
然后 clone Let's Encrypt
到本地,并执行其中的配置脚本:
git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto certonly --server https://acme-v01.api.letsencrypt.org/directory --agree-dev-preview
期间会要求输入邮箱和要配置 HTTPS 的域名。完成后会生成证书文件:
/etc/letsencrypt/live/slarker.me/fullchain.pem
/etc/letsencrypt/live/slarker.me/privkey.pem
配置 Nginx
我这里需要配置的比较简单:
server {
listen 80;
server_name slarker.me;
return 301 https://slarker.me$request_uri;
}
server {
listen 443 ssl;
server_name slarker.me;
ssl_certificate /etc/letsencrypt/live/slarker.me/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/slarker.me/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
access_log /var/log/nginx/ghost.log;
error_log /var/log/nginx/ghost_error.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:6000;
proxy_redirect off;
}
}
监听了 80 和 443 端口,301 会把请求都重定向到 HTTPS 上,然后把上面生成的证书文件路径也加进来,然后重启 Nginx 就 OK 了。
七牛静态资源也能使用 HTTPS
如果博客里面没有用到外部的一些静态图片等资源,那这时候访问网站,应该会看到地址栏有一把小绿锁了。但是我的博客一直使用的是七牛的免费图床,一直都是 HTTP
外链,所以地址栏的小绿锁也没有显示。
所以只有把图片等资源都换成 HTTPS
链接就可以了,而现在七牛也是支持 HTTPS
的。对于未经过备案的域名,可以使用七牛提供的 融合 CDN 加速域名
。
点击 HTTPS 域名
后,七牛会为这个存储空间生成一个支持 HTTPS
的域名,之前的 HTTP
域名依然有效,两种方式都可以正常访问资源。
然后把博客中用到的图片链接都换成相应的 HTTPS
链接就可以了。
替换完成后,现在地址栏的小绿锁终于有了!