Let’s Encrypt免费申请ssl 证书

最近买了阿里云的服务器和域名,打算diy 一个小程序,登录到微信公众平台去绑定域名,发现微信公众平台要求以 https 方式通信,在网上找了个申请免费申请ssl 证书的地方 Let’s Encrypt (口碑还不错),接下来就给大家介绍怎么利用Let’s Encrypt 生成ssl 证书

  1. 安装Certbot客户端: yum install certbot
  2. 获取证书: certbot certonly --standalone -d example.com -d www.example.com

生成的证书文档会放到 下面的路劲下

/etc/letsencrypt/example.com

最后把  fullchain.pem,privkey.pem 配到你的Nginx 或Apache 对应的配置中

配置完这些过后,我们的工作还没有完成。 Let’s Encrypt 提供的证书只有90天的有效期,我们必须在证书到期之前,重新获取这些证书,certbot 给我们提供了一个很方便的命令,那就是 certbot renew。
通过这个命令,他会自动检查系统内的证书,并且自动更新这些证书。
我们可以运行这个命令测试一下

certbot renew --dry-run 

我在运行的时候出现了这个错误

Attempting to renew cert from /etc/letsencrypt/renewal/api.diamondfsd.com.conf produced an unexpected error: At least one of the required ports is already taken.. Skipping.

这是因为我域名生成证书的时候使用的是 –standalone 模式,验证域名的时候,需要启用443端口,这个错误的意思就是要启用的端口已经被占用了。 这时候我必须把nginx先关掉,才可以成功。果然,我先运行 service nginx stop 运行这个命令,就没有报错了,所有的证书都刷新成功。

证书是90天才过期,我们只需要在过期之前执行更新操作就可以了。 这件事情就可以直接交给定时任务来完成。linux 系统上有 cron 可以来搞定这件事情。
我新建了一个文件 certbot-auto-renew-cron, 这个是一个 cron 计划,这段内容的意思就是 每隔 两个月的 凌晨 3:00 执行 更新操作。

0 3 * */2 * certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"

–pre-hook 这个参数表示执行更新操作之前要做的事情,因为我有 –standalone 模式的证书,所以需要 停止 nginx 服务,解除端口占用。
–post-hook 这个参数表示执行更新操作完成后要做的事情,这里就恢复 nginx 服务的启用

最后我们用 crontab 来启动这个定时任务

crontab certbot-auto-renew-cron

至此,整个网站升级到HTTPS就完成了。 总结一下我们需要做什么

  1. 获取Let’s Encrypt 免费证书
  2. 配置Nginx开启HTTPS
  3. 定时刷新证书

遇到的坑:certbot 是python 实现,安装的过程中会发现 会报各种包找不到的错,还有有些包明明装了也报错,先卸载它,然后再用pip安装就可以了,其中有个 pyOpenSSL 通过这种方式解决也无济于事,最后在Stack Overflow 找到一位大神提供的方法终于把这个问题解决

sudo python -m easy_install --upgrade pyOpenSSL

另外一个快捷方式:https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E

泛域名支持:https://github.com/Neilpang/acme.sh/tree/master/dnsapi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值