我的Blog是基于hexo生成的纯静态页面,host在nginx server上。其实通过普通的http访问方式已经足够了,开启https纯属折腾,请叫我不折腾不舒服斯基。
提到https,不得不提到免费的StarSSL证书,之前也申请了用过一段时间,感觉申请和续期证书的步骤都比较繁琐。后来随着证书过期,遂放弃之……
最近,在网上火透半边天的,非 Let’s Encrypt 的免费SSL证书莫属了。Let’s Encrypt 是一个将于2015年末推出的数字证书认证机构,将通过旨在消除当前手动创建和安装证书的复杂过程的自动化流程,为安全网站提供免费的SSL/TLS证书,同时,它还是免费、自动化、开放的证书签发服务。Let’s Encrypt的证书申请和续期都非常方便,默认的证书有效期是90天,通过cron的定时任务可以实现自动化的续期,所以,能通过自动的方式解决的问题都不是问题,这也是这次折腾起https支持的原因。此篇blog主要记录一下申请证书,配置证书到nginx,以及自动续期的实现步骤,供有兴趣的同学参考。
第一步 获取Certbot
Certbot 是一个简单易用的 SSL 证书部署工具,由 EFF 开发,前身即 Let’s Encrypt 官方(Python)客户端。简单来说,certbot 就是一个简化 Let’s Encrypt 部署,和管理 Let’s Encrypt 证书的工具。certbot的开源项目在GitHub上,所以,我们的第一步,是clone certbot项目到本地:
1 | git clone https://github.com/certbot/certbot |
第二步 申请证书
现在,可以通过脚本来申请证书了,以我的域名为例:
1 | cd certbot |
出现如下的证书申请与安装界面:
选择第二个选项,OK并继续。界面会提示证书申请成功的信息,表示证书已经成功生成。
需要注意的是,在申请证书之前,如果本机有运行Nginx,需要先停掉。并确认本机的443端口能被公网所访问
第三步 配置证书
申请好的证书,包含四个文件,默认会放在这里:
1 | /etc/letsencrypt/live/www.xiaozhou.net/fullchain.pem |
有了这些证书文件,我们就可以去配置我们的Nginx了,实际上,我们用两个证书文件就行了,一个是带私钥的文件,一个是带公钥的文件。拿我的Nginx配置文件举个栗子:
1 | server { |
配置好之后,直接用Nginx reload配置即可。
第五步 证书的验证
证书配置好了,我们就可以直接用浏览器通过https地址来访问和验证证书了,比如:https://xiaozhou.net
我们会看到地址栏的前面有一把小锁,嗯,咱是有证书的人了!
点击查看证书,还可以看到申请到的证书的详细信息,Let’s Encrypt签发的,货真价实:
第六步 证书的自动续期
最后一步,就是证书的自动续期了。Let’s Encrypt的证书,默认的有效期是90天,不过官方推荐每60天续期。到期之后,我们需要用命令来为证书续期,不过我们是懒人,这种体力活还是交给机器来完成比较合适。所以,我们可以用Linux的cron job来完成这类的任务,配置cron job,每两个月的第一天,执行下面的命令:
1 | #minute hour day month day_of_week command |
注意在cron job里面需要用绝对路径
完结
简单的六步,我们轻轻松松的就申请了证书,并给blog开启了https访问,还给证书设置了自动续期,嗯,多亏了certbot这个工具,相比起当初申请StarSSL的各种繁琐,一切实在是来得太方便了。