昨天折腾了一天,终于将自己的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服务有三种类型,Flexible
,Full 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 | # ACS系统配置 |
重启服务器
重启Nginx服务器,就可以看到网站已经可以进行HTTPS访问了。
1 | nginx -s reload |
访问https://acs.qinjiangbo.com
可以看到页面上已经有小绿锁了。
总结
关于HTTPS在本站上面的配置就总结到这里。Apache和IIS的方式和Nginx非常类似,就不多说了。关于使用Let’s Encrypt加密的方式以后有时间再介绍吧,因为和这个差不多。同时也欢迎大家使用爬虫来爬取这个网站,看看你能坚持多久?!