世界杯logo

FreeSSL免费证书

在一年内用完20个免费额度只能给钱买了(阿里还是比较好,每年都有20个免费额度可以领)~~但凭借我的聪明才智(臭美,哈哈~),想到一个方法可以延缓这种情况(但治标不治本)。因为我们公司阿里云账号特别多,每年几乎都能申请新账号去享受新用户优惠,只要公司人员有流动,同时也意味着有很多旧账号。方法就是域名转至其他账号。

老实说,我不喜欢这样做,作为一个坦荡正义之人,要有自己的道德标准,嘘。。不废话,咱们继续

昨天上班我是有预留点时间去测试acme.sh做免费证书申请的【https://zhuanlan.zhihu.com/p/112300451】,不过还是在阿里云DNS API验证域名的那步有问题(2020年的时候也是在这里测不通),要用到阿里的ak(阿里云RAM访问控制)。后来试下用.well-known文件夹方式验证也不行【https://ruby-china.org/topics/31983】。

由于今天那些域名证书就过期了,昨天上班还有别的事忙,所以先申请好阿里的留个后路给自己。想起阿强昨天也在研究免费证书申请(用的FreeSSL网站),但开始没用他的方法测试而用文件夹/DNS API方式,是因为以前在我的vps是可以测通文件夹验证方式的,说不定DNS也可以呢,然而,现在连文件夹的方式也不行,只能今天试阿强的方法了。

二、FreeSSL申请免费证书

1、证书申请和部署:

(1)注册账号:https://freessl.cn/

我这里是申请泛域名证书, 一路按步骤进行即可

(2)配置

DCV配置:域名解析,添加CNAME记录

(3)服务器部署

最后到服务器上运行命令部署,我用的是acme.sh(昨天测的环境已经装过,省事)

完了之后会有这个图:

注意:因为默认泛域名证书生成位置为:/root/.acme.sh/ 下,貌似直接复制到nginx某个证书目录下是不行的(阿强好像说过,我懒先不测了),所以需要加这步(我昨天是用公司elk那个域名去测的,因为相对来说没那么重要):

用root去执行,上面服务器部署acme.sh 都是用root跑的。

acme.sh --install-cert -d *.xxx.net --key-file /home/{运行nginx普通用户}/app/nginx/conf/cert/elk/key.pem --fullchain-file /home/{运行nginx普通用户}/app/nginx/conf/cert/elk/cert.pem

顺便补充acme.sh 部署过程,因为我线上服务器用官方的命令不行:【curl https://get.acme.sh | sh 】

mkdir /usr/local/src/acme-ssl && cd /usr/local/src/acme-ssl

git clone https://github.com/acmesh-official/acme.sh.git

cd acme.sh

./acme.sh --installsource ~/.bashrc

(4)修改nginx配置文件里面的证书配置

ssl_certificate /home/{运行nginx的普通用户}/app/nginx/conf/cert/elk/cert.pem;

ssl_certificate_key /home/{运行nginx的普通用户}/app/nginx/conf/cert/elk/key.pem;

修改权限:[root@xtw704 extra]$ chown

{运行nginx的普通用户}.{运行nginx的普通用户} /home/{运行nginx的普通用户}/app/nginx/conf/cert/elk/*.pem

重新加载nginx配置文件即可。

2、测试和验证:

场景一:证书起效依赖生成证书的客户端么

答:不依赖

留意上面我截的图,这个服务器是我的一个入口测试服务器,我不敢在原转发的elk入口服务器去部署acme.sh,因为那台服务器很重要。从测试服务器拷贝:cert.pem 和 key.pem 到正式入口服务器,测过能起效(注意要改下dns解析的A记录,nginx入口依赖)

场景二:泛域名是否能正常起效

答:可以

上面测试的是 elk.xxx.net,现在是 jenkins.xxx.net,也是把cert.pem 和 key.pem 拷贝到入口nginx服务器,改下nginx证书配置文件即可