异想天开

What's the true meaning of light, Could you tell me why

全站https

日期:2016-08-06 10:57:51
  
最后更新日期:2019-04-15 08:09:49
抱着装逼耍酷的心态,小站实行了全站https。当然鄙人是不舍得花钱去买证书,有一个let's encrypt的项目,可以颁发免费的ssl证书。这是个开源项目,如果你登录首页去看,发现大名鼎鼎的google也是其捐赠者之一。
技术上的细节不多说,网上一搜随便都是。有个sslforfree的网站,它对let's encrypt做了一层封装,可以方便申请到let's encrypt的证书。不过需要注意,这个证书是3个月需要续期的,想想也正常,避免了浪费资源。
这里踩了两个坑:
1. 证书链
你需要把中间证书一起打包,因为浏览器只有信任的根证书。一般证书颁发机构会提供你的网站证书和从根证书到你的网站证书的中间证书bundle。浏览器验证网站证书时,是从后往前,直到根证书,那么你把你的证书放在中间证书前面即可。你没有制作证书bundle时,只用网站证书时,有时也会验证通过,比如你的浏览器缓冲了你所需要的中间的证书。但在其他地方就不行,比如我申请的时候,在linux系统,当时验证https。昨天换到windows才发现证书链有问题。

2.图片等https
由于之前图片链接是用的http,还需要把图片地址全部替换为https地址,这样浏览器的地址栏,才会显示为绿色。之前其实某些页面也用了https,因为是自己做根证书,浏览器的地址栏也不会绿色,这次与国际接轨,就是为了有绿色的https。
补充:
每次通过sslforfree手动续期了几次,就感觉比较麻烦了。letsencrypt本来是支持自动续期的,官网推荐使用certbot。这里为方便大家,贴下过程:
1. 下载certbot
wget https://dl.eff.org/certbot-auto
2. 执行
chmod u+x ./certbot-auto
./certbot-auto
执行过程会下载一系列的依赖包,若更新失败,参考一提示说可以替换为阿里云的镜像,这条未经实验。
vi ~/.pip/pip.conf
#如果文件不存在则创建
mkdir ~/.pip
vi pip.conf
在里面修改或写入下面内容
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
vi ~/.pip/pip.conf
#如果文件不存在则创建
mkdir ~/.pip
vi pip.conf
在里面修改或写入下面内容
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
重新执行。注意一点就是执行的过程中,需要关闭已经启动的nginx服务器,然后填写邮箱和域名即可。一切ok后,生成的证书在如下目录/etc/letsencrypt/live/xxxxx(域名)/。需要注意的是,certbot是支持填写多个域名的,如:
./certbot-auto certonly -d cosx.me,www.cosx.me
生成的证书会同时对这两个域名有效。
有三种方式,与证书机构进行认证:
[code lang="cpp"]
How would you like to authenticate with the ACME CA?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: Nginx Web Server plugin (nginx) [Misconfigured]
2: Spin up a temporary webserver (standalone)
3: Place files in webroot directory (webroot)
[/code]
一般我选择第三种比较方便,不用自己额外操作什么。

参考:
1. http://www.linuxidc.com/Linux/2017-03/142248.htm