Nginx(Centos6.5) Let's encrypt 证书配置

缘起

    大约2年前,搞了个google 镜像站,后来由于众所周知的原因,镜像被Q了。。。于是用上了SSL安全链接,来规避一部分的问题(其实效果然并卵啦,域名被g。f。w盯上后,怎么折腾都不给力,还是换新二级域名靠谱)

    开始的时候使用的是Startssl的免费证书,倒是也没什么问题,有一年期限的免费证书可用,用了2年左右,然后呢,全段时间,Startssl被360收购,然后爆出一些乱发证书的事情,现在即将被各大浏览器不信任(https://www.v2ex.com/t/309184?p=1

    刚好马上startssl的证书就过期了,然后呢,调研了下免费证书的情况,发现Let‘s Encrypt证书挺好的,能够自动的续约证书,虽然只有3个月的有效期,但是对于一个小小的个人站点,没关系的啦,也就是加密下网站流量嘛。自动脚本续期的功能以及不限制单个证书只能用于一个域名是在太诱人了,隧决定迁移到Let’s Encrypt证书, 最近已经迁移完成了,在此记录下吧!!


过程

    网上查了不少资料,发现目前中文网站的资料,大多介绍采用webroot验证的方式进行部署,这样就有一定的性能损耗,同时呢假设同域名有多个ip及服务器,就很难去验证了,因此这里尝试查了通过设置dns解析记录方式的验证。

1、采用webroot验证方式的部署

    采用此方式的资料很多,这里就不在累述了,发一个链接,有需要的可以直接参考

    webroot验证方式

2、采用dns解析方式的部署

    最终我是选择了这种方式进行部署,有很多优点:1、只用设置dns,不会浪费服务器性能 2、目前有完善的开源项目,可以支持主流的dns服务商的验证解析记录添加 3、能够通过脚本同步同域名多服务器的签名

    部署过程

    0、这里采用acme.sh这个工具来自动化部署,网站见https://github.com/Neilpang/acme.sh,其实这个项目的文档相当全面,直接按照readme完全可以搞定

    1、安装acme.sh

    直接

curl https://get.acme.sh | sh

或者

wget -O -  https://get.acme.sh | sh

这样的话就是按照默认配置安装了acme.sh工具,如果需要制定目录,可以看看https://github.com/Neilpang/acme.sh/wiki/How-to-install

     2、生成证书以及设置dns解析

acme.sh  --issue  -d yanke.info -d fq.yanke.info  --dns

其中-d参数可以多个,对应于你签的这张证书给几个域名使用    


补充,目前最新版本的acme.sh已经支持Let‘s Encrypt 的wildcard,也就是通配符证书,因此一个域名只需要 -d yanke.info -d *.yanke.info即可适用于所有的二级域名了,这样更加方便,其他的配置和之前完全一样~~~


--dns是说要使用dns解析记录的方式验证域名的所有权,一般需要设置下域名商的api key和密码,比如使用dnspod解析时命令如下

先声明下dnspos的api id以及key,这里的id以及key可以在dnspod控制台的用户中心->Api token中创建,id是5位数字,token就是这里的key了,是个很长的字符串;这里只用这次设置,下一次就会记住了,自动续期时自动使用

export DP_Id="1234"
export DP_Key="sADDsdasdgdsf"

然后生成证书

acme.sh --issue --dns dns_dp -d yanke.info -d fq.yanke.info

然后在家目录~/.acme.sh/mycerts下就产生了证书以及证书key,分别是funnchain.cer和yanke.info.key

同时呢,这个执行过程中,已经完成了域名解析记录的生成以及自动验证过程,可谓是十分自动化

3、部署并使用证书

在上一部中我们已经产生了证书,接下来就部署到Nginx或者Apache中,其实这个工具也支持自动部署的,命令如下,实测-d参数随意,问题不大

acme.sh --install-cert -d example.com \
--key-file       /path/to/keyfile/in/nginx/key.pem  \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd     "service nginx force-reload"

4、同时呢,acme工具已经自动帮我们加了续期证书的脚本,可以用crontab -l查看任务

总结

整体上Let's Encrypt还是很好用的,而且有一众开源免费的工具可以实现自动续期证书,这对于想要实现网站流量加密的小站来说真的是雪中送炭了,使用起来也不会有什么障碍,而且支持多域名等等特性, 非常值得尝试!!


现在Let's Encrypt支持了wildcard通配符域名证书,真的是无可挑剔了,对于个人使用真的是又免费又好用,比如我还有个邮箱的二级域名,这样直接一个域名所有的都搞起来了,非常方便~~~


对于Let's Encrypt, 1024个赞👍


参考

https://github.com/Neilpang/acme.sh

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。