网站已经运行了一年了,一直走的http协议,是时候该启用https协议来保证传输安全了。本文环境是使用Hexo在VPS上搭Cloudflare生成证书和私钥,其他环境的话仅供参考。
$[timeformat('2019-10-10T11:55:44+08:00')]
#VPS#建站记录

起因

前两天学着使用了Bettercap进行内网嗅探和欺骗,发现http明文传输就像群发消息一样,谁都可以轻易获取到,而https使用ssl加密一下就安全不少,但还是可以使用sslstrip降级。只有HSTS(HTTP Strict Transport Security)强制使用https传输做到了九成的安全,打败了绝大多数的https proxy。下面开始记录启用https的方法。

申请ssl证书

申请ssl证书的方法有多种,我这里使用CloudFlare。优点是它还提供了CDN加速,证书有效时间最长能达到15年。

首先进入https://dash.cloudflare.com/sign-up注册账号,验证邮箱并登录。之后添加站点:

1

选择方案,我选择免(bai)费(piao)(^-^)。

2

确认之后它会查询这个域名的DNS解析记录,一般都会有至少一条,可以再添加一条name为“WWW”的记录,ip地址填VPS的ip,这样就可以使用www.xxx.abc解析你的xxx.abc站点。

3

点击继续就会让你去修改域名注册商那里的权威名称服务器地址,其中蓝色框的是cloudflare查到的权威名称服务器地址,需要在域名注册商那里删除,并加进红色框里的cloudflare的权威名称服务器地址。

5

我的域名是在porkbun那里注册的,所以登录porkbun并转到域名详情,修改权威名称服务器地址。

4

之后就是等待域名注册商处理。我的大概五分钟就发邮件告知我处理好了,打开cloudflare的账户首页https://dash.cloudflare.com/看到刚添加的站点已经是活跃的。

6

打开ssl/tls页,看到四种加密模式:

  • Flexible:灵活,只加密浏览器和cloudflare之间的数据;
  • Full:完全,不但加密浏览器和cloudflare之间的数据,还加密cloudflare和VPS之间的数据;
  • Full (strict):完全(强制),在Full基础上每次https请求都会验证证书。

7

我选择第四种。然后打开旁边的origin server页,点击Create Certificate创建证书。

8

全部默认即可,证书有效期有15年。点击next,得到了两段字符串:

9

10

将两段字符串保存到VPS上,文件名随便起,后缀名分别为pem和key,例如Origin Certificate里的字符串命名为otuki.top.pem,Private key里的字符串命名为otuki.top.key,并记录好路径。

更改nginx配置

登录VPS,找到自己的Nginx配置文件。我的在/etc/nginx/sites-available下,打开配置文件,修改:

listen 80 default_server;
listen [::]:80 default_server;
listen 443 http2 ssl;
# 对应origin certificate
ssl_certificate /证书路径/otuki.top.pem;
# 对应private key 
ssl_certificate_key /私钥路径/otuki.top.key;

重启Nginx服务

nginx -s reload

至此,我的站点就启用了https进行加密传输了。另外cloudflare里还有一些像速度优化等其他功能,可以自己摸索一下。


评论