​​Let's Encrypt 提供了90天免费证书,而 acme.sh 实现了 acme 协议, 可以从 ​​Let's Encrypt 生成免费的证书.,通过计划任务可实现自动续期,自动部署,完全摆脱了人工,懒人必备。

Acme.sh 官方资料:

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

安装:

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

安装目录为 home 下的 .acme.sh,如 root 用户: /root/.acme.sh

生成证书:

$ acme.sh --register-account -m i@liu12.com --issue --debug \ --dns dns_ali \-e Ali_Key="xxxxxx" \ -e Ali_Secret="xxxxxx" \-d liu12.com -d *.liu12.com

参数解释:

--register-account

自动注册账号

-m i@liu12.com 

自动注册账号的邮箱

--issue

生成证书

--debug

显示调试信息,会输出执行过程中的详细信息,方便发现问题

--dns dns_ali.

通过 DNS 接口验证域名(本例阿里云域名),另有 http 方式验证 --webroot,不推荐使用。因为它不支持生成通配符域名证书(即示例中的 *.liu12.com)
如查你蚬到以下报错,就是这个问题了

The supported validation types are: dns-01 , but you specified: http-01

-e Ali_Key="xxxxxx"
-e Ali_Secret="xxxxxx"

这两个是阿里云的 AccessKey,阿里云两主账号和子账号两种,分配好权限后都可以使用。

-d liu12.com
-d *.liu12.com

要生成证书的域名,可用通配符 *

如果是腾讯的 dnspod 域名,则命令行为:

$ acme.sh --register-account -m i@liu12.com --issue --debug \ --dns dns_dp \-e DP_Id="xxxxxx" \ -e DP_Key="xxxxxx" \-d liu12.com -d *.liu12.com

国内主要这两家,如果是其它域名,请参考:

dnsapi · acmesh-official/acme.sh Wiki · GitHub

成功生成证书后,在 ~/acme.sh 目录下,将产生一个目录,本例中为 "liu12.com"

目录下的文件结构如下:

其中,liu12.com.cer 和 fullchain.cer  是证书,fullchain.cer 为完整的证书链,一般使用 fullchain.cer, liu12.com.key; 为私钥,配置到 nginx 中示例:

server {listen 443 ssl;server_name www.liu12.com;ssl_certificate /***/liu12.com/fullchain.cer;ssl_certificate_key /***/liu12.com/liu12.com.key;// ......
}

重启下 nginx,您的域名就可以通过 https 访问了

crontab -e 查看计划任务,发现Acme.sh 已自动创建了一条定时任务,每天都会检查,证书到期前 30 天,将自动续期

40 0 * * *  /***/.acme.sh  --cron --home "/***/.acme.sh" > /dev/null

实际应用中,我们不需要这么频繁,因为会提前 30 天续期,因此每周运行一次即可,本例设置为每周一的 2:15。

15 2 * * 1 /***/.acme.sh --cron --home "/***/.acme.sh" > /dev/null

计划任务中可另加一条  3:15 重启 nginx,即执行更新证书后1小时,重新加载 nginx

15 2 * * 1 /***/.acme.sh --cron --home "/***/.acme.sh" > /dev/null
15 3 * * 1 /***/nginx -s reload

有的小伙伴可能担心 nginx 有一段时间使用旧证书是否有问题,这个可以放心,我们测试过,新旧两套证书同时都是有效的!

另外,acme.sh 也有一个 docker 封装,使用起来更加方便

docker run --rm -itd -v /cert:/acme.sh \ -e Ali_Key="xxxxxx" -e Ali_Secret="xxxxxx" \--name=acme.sh neilpang/acme.sh daemon

docker 运行 neilpang/acme.sh 镜像,参数与命令行方式类似。docker 提供了 -v 参数,可以将存放证书的目录挂载在外部,这里用了 /cert,成功运行后, 通过 docker ps 命令可看看取启动了个 名叫 "acme.sh" 的容器,它是一个基础工具,可以重复便用它生成域名证书

docker exec acme.sh --register-account -m i@liu12.com \--issue --debug --dns dns_ali -d liu12.com -d *.liu12.com

执行完成后,在 /cert 目录下同样出现了 liu12.com. 的证书目录

添加计划任务,自动对证书续期

15 2 * * 1 docker exec acme.sh --cron

阿里云的域名请注意

阿里云主账号本身的 accessKey,权限足够大,可以忽略这个问题,如果你使用了阿里云的 子账号 AccessToken,可能会遇到下边错误:

Error add txt for domain:_acme-challenge.liu12.com

这个是权限问题,在子账号权限配置里,有两项域名权限:

AliyunDomainFullAccess   -  管理域名服务的权限
AliyunDNSFullAccess - 管理云解析(DNS)的权限

注意,一定要加下边这个 解析 权限

腾讯云的 dnspod 域名

​最近使用 acme.sh 对 腾讯云 dnspod 带通配符域名 生成证书时,没有什么报错,证书也成功生成了,但是查看证书数据,并不包含通配符域名。一直没有研究出来原因,放弃了,如有遇到类似问题的朋友一起切磁切磁

本文原始网址:Acme.sh 自动更新 Lets Encrypt 证书,转载请保留出处

Acme.sh 自动生成、续期 ​Let‘s Encrypt 免费SSL证书相关推荐

  1. wordpress个人博客申请Let’s Encrypt免费SSL证书

    最近,在网上火透半边天的,非 Let's Encrypt 的免费SSL证书莫属了.Let's Encrypt 是一个将于2015年末推出的数字证书认证机构,将通过旨在消除当前手动创建和安装证书的复杂过 ...

  2. Let‘s Encrypt免费SSL证书申请

    摘要: Let's Encrypt作为一个公共且免费SSL,目前Let's Encrypt免费SSL证书默认是90天有效期,但是我们也可以到期自动续约. 参考搬砖内容: GitHub - acmesh ...

  3. windows server使用 LetsEncrypt-Win-Simple来安装和使用用Let's Encrypt免费SSL证书

    一.网站部署 LetsEncrypt-Win-Simple可以自动发现已经部署的网站供我们选择要生成证书的网站,而且还需要进行验证.所以在生成证书之前,确保网站已经部署好并可以正常访问. 二.生成证书 ...

  4. 利用Certbot工具快速给网站部署Let's Encrypt免费SSL证书

    使用https证书的话,强制使用域名 很多商家也都提供免费证书,比如腾讯云提供免费一年GeoTrust DV SSL证书.Let's Encrypt永久免费但需要90天激活一次续约,当然如果要购买证书 ...

  5. Django服务器安装ssl证书,Django网站(Apache部署)安装Let's Encrypt免费SSL证书

    为什么要HTTPS 2018年2月8日,谷歌浏览器发布官方博客称,2018年7月发布的新版谷歌浏览器Chrome将把所有的HTTP网站标记为不安全.这项举措是为了促进网络安全,倡导更多网站使用HTTP ...

  6. 申请Let‘s Encrypt免费SSL证书、自动化续签证书

    一.环境 安装证书的环境为Centos + Nginx,如果没有安装Nginx则需要先安装. 二.申请流程 1.开放80和443端口 firewall-cmd --permanent --add-po ...

  7. 申请Let‘s Encrypt永久免费SSL证书

    Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla.Cisco.Akamai.IdenTrust.EFF等组织人员发起,主要的目的也是为了推进网站从H ...

  8. 实战申请Let's Encrypt永久免费SSL证书过程教程及常见问题

    最近需要https这里看到一份不错的博客,收录一下! Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla.Cisco.Akamai.IdenTrust ...

  9. 申请Let's Encrypt永久免费SSL证书

    申请Let's Encrypt永久免费SSL证书 申请Let's Encrypt永久免费SSL证书 Let's Encrypt简介 Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用 ...

最新文章

  1. linux u盘 挂载 type,Linux挂载U盘报错:mount: unknown filesystem type 'ntfs'
  2. HTML5仿微信聊天界面、微信朋友圈实例
  3. Windows-Server下加强系统安全性系列之方案【九】
  4. POJ 2385 Apple Catching
  5. 左神算法:调整搜索二叉树中两个错误的节点(Java版)
  6. 字符串、指针、引用、数组基础
  7. 行,Python玩大了!​取代Excel,程序员:太牛!你怎么看?
  8. 《人工智能及其应用》1-6章
  9. 偶像生于1964:马云、张朝阳、求伯君的激荡人生
  10. Linux 英文版命令窗口,在LINUX命令行中翻译英文
  11. Flink On K8S终极实现方案
  12. 如何在命令行状态清除SEP隔离区(Quarantine)
  13. UE4 VR项目设置总结
  14. snort实验(一)
  15. 【题解】【AcWing】1526. 洗牌机
  16. 甜糖官方爱快docker
  17. [置顶]Ceph源码解析:PG peering
  18. Windows远程桌面怎么使用,看完马上学会!
  19. 齐岳:环糊精修饰Fe3O4磁性纳米复合材料|十二烷基硫酸钠(SDS)将Fe3O4磁性纳米粒子定量地修饰到多壁碳纳米管
  20. EPICS记录参考--计算输出记录(calcout)

热门文章

  1. 分布估计算法java_数理统计8:点估计的有效性、一致最小方差无偏估计(UMVUE)、零无偏估计法...
  2. ipv4服务器不显示怎么办,如何查看服务器ipv4地址
  3. Type interface xxx.XxxMapper is not known to the MapperRegistry解决方案
  4. java代码检查工具pmd_Java 代码检查工具 PMD
  5. 人生,总是懂得太慢,明白得太晚!
  6. C++/QT 贪吃蛇小游戏 界面设计
  7. 3296电位器调节工具
  8. 伯努利分布+朴素贝叶斯分类器の概率解释
  9. 将虚拟环境添加到Jupyter notebook中
  10. HCIA学习----第一天