利用FreeSSL升级网站系统到HTTPS

昨天折腾了一天,终于将自己的Hexo博客成功升级成了HTTPS加密传输协议,使用的是CloudFlare技术支持。但是我的博客系统其实是在Github Pages上进行托管的,因此我并没有手动配置HTTPS支持,而是通过CloudFlare的DNS服务进行反向代理,从而实现HTTPS。所以,我在想啊,对于有服务器的同学而言,前面通过CloudFlare反向代理的方式的确可以,但是使用的如果不是CloudFlare的服务呢?再说明本文的解决方案之前,先说说为什么不能使用CloudFlare的Origin Certificate。

CloudFlare的Origin Certficate是什么?

我在CloudFlare的Crypto菜单下面发现了一个新大陆,就是Origin Certificate,满心欢喜的下载了证书,但是部署到自己的服务器以后,发现通过外网(不走CloudFlare的反向代理,只解析DNS)访问就会存在一个问题,总是会报一个错:certificate signed by unknown authority,这个就让我很郁闷了,后来发现这个证书有效期居然可以到十五年。

后来发现这个证书和我们自己申请的证书不一样,具体表现在这个证书仅仅只是为了配合CloudFlare的反向代理提供HTTPS服务。还记得我昨天写到的CloudFlare的HTTPS服务有三种类型,FlexibleFull SSL以及Full SSL (strict)吗,这个源站证书(Origin Certificate)就是为了配合这其中后两种类型的,因此不适用于通过外网直接访问源站的情形。

FreeSSL是一个好的解决方案

找了一下,有人说Let’s Encrypt不错,我也看了一些文章,大家都觉得这个挺好的,我也觉得不错。不过今天我们的主题是FreeSSL,所以就单纯聊聊通过FreeSSL如何实现全站的HTTPS加密访问。

进入官网注册

FreeSSL官网地址为https://freessl.org,进入以后,输入自己的邮箱注册。

然后它就会发一封激活邮件到你的邮箱,点击链接激活之后就自动登录了。

生成证书

输入你的域名,以我的为例,我的是一个子域名acs.qinjiangbo.com,另外建议选择亚洲诚信(Trust Asia),因为有效期为一年,而Let’s Encrypt是三个月。然后就跳转到了这个页面:

和我的配置保持一致就好了,然后就要到你的DNS域名解析服务商那里添加TXT类型的解析。我之前已经迁到CloudFlare上面来了,所以就在CloudFlare上直接修改了;如果你的是在阿里云或者腾讯云上面等,都是一样的操作。

验证并下载证书

一般来说,等待一两分钟就可以验证并下载了。下载结果页如下:

Nginx服务器配置

下载下来的证书有两个文件,一个是full_chain.pem,另一个是private.key,这两个文件非常重要,千万不要搞丢了。我们进入服务器,将这两个文件放在/etc/https/目录下,这个https目录是自己创建的,当然你也可以取别的名字。

打开你的Nginx服务配置,在对应虚拟主机配置下面添加以下代码即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# ACS系统配置
server {
listen 80;
listen 443;

ssl on;
ssl_certificate /etc/https/full_chain.pem;
ssl_certificate_key /etc/https/private.key;

server_name acs.qinjiangbo.com;
access_log /var/log/nginx/access.log main;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

# 重定向non-https流量到https
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
}

重启服务器

重启Nginx服务器,就可以看到网站已经可以进行HTTPS访问了。

1
nginx -s reload

访问https://acs.qinjiangbo.com可以看到页面上已经有小绿锁了。

总结

关于HTTPS在本站上面的配置就总结到这里。Apache和IIS的方式和Nginx非常类似,就不多说了。关于使用Let’s Encrypt加密的方式以后有时间再介绍吧,因为和这个差不多。同时也欢迎大家使用爬虫来爬取这个网站,看看你能坚持多久?!

分享到