Acme.sh 自动生成、续期 Let‘s Encrypt 免费SSL证书
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证书相关推荐
- wordpress个人博客申请Let’s Encrypt免费SSL证书
最近,在网上火透半边天的,非 Let's Encrypt 的免费SSL证书莫属了.Let's Encrypt 是一个将于2015年末推出的数字证书认证机构,将通过旨在消除当前手动创建和安装证书的复杂过 ...
- Let‘s Encrypt免费SSL证书申请
摘要: Let's Encrypt作为一个公共且免费SSL,目前Let's Encrypt免费SSL证书默认是90天有效期,但是我们也可以到期自动续约. 参考搬砖内容: GitHub - acmesh ...
- windows server使用 LetsEncrypt-Win-Simple来安装和使用用Let's Encrypt免费SSL证书
一.网站部署 LetsEncrypt-Win-Simple可以自动发现已经部署的网站供我们选择要生成证书的网站,而且还需要进行验证.所以在生成证书之前,确保网站已经部署好并可以正常访问. 二.生成证书 ...
- 利用Certbot工具快速给网站部署Let's Encrypt免费SSL证书
使用https证书的话,强制使用域名 很多商家也都提供免费证书,比如腾讯云提供免费一年GeoTrust DV SSL证书.Let's Encrypt永久免费但需要90天激活一次续约,当然如果要购买证书 ...
- Django服务器安装ssl证书,Django网站(Apache部署)安装Let's Encrypt免费SSL证书
为什么要HTTPS 2018年2月8日,谷歌浏览器发布官方博客称,2018年7月发布的新版谷歌浏览器Chrome将把所有的HTTP网站标记为不安全.这项举措是为了促进网络安全,倡导更多网站使用HTTP ...
- 申请Let‘s Encrypt免费SSL证书、自动化续签证书
一.环境 安装证书的环境为Centos + Nginx,如果没有安装Nginx则需要先安装. 二.申请流程 1.开放80和443端口 firewall-cmd --permanent --add-po ...
- 申请Let‘s Encrypt永久免费SSL证书
Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla.Cisco.Akamai.IdenTrust.EFF等组织人员发起,主要的目的也是为了推进网站从H ...
- 实战申请Let's Encrypt永久免费SSL证书过程教程及常见问题
最近需要https这里看到一份不错的博客,收录一下! Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用户传播和使用,是由Mozilla.Cisco.Akamai.IdenTrust ...
- 申请Let's Encrypt永久免费SSL证书
申请Let's Encrypt永久免费SSL证书 申请Let's Encrypt永久免费SSL证书 Let's Encrypt简介 Let's Encrypt作为一个公共且免费SSL的项目逐渐被广大用 ...
最新文章
- linux u盘 挂载 type,Linux挂载U盘报错:mount: unknown filesystem type 'ntfs'
- HTML5仿微信聊天界面、微信朋友圈实例
- Windows-Server下加强系统安全性系列之方案【九】
- POJ 2385 Apple Catching
- 左神算法:调整搜索二叉树中两个错误的节点(Java版)
- 字符串、指针、引用、数组基础
- 行,Python玩大了!​取代Excel,程序员:太牛!你怎么看?
- 《人工智能及其应用》1-6章
- 偶像生于1964:马云、张朝阳、求伯君的激荡人生
- Linux 英文版命令窗口,在LINUX命令行中翻译英文
- Flink On K8S终极实现方案
- 如何在命令行状态清除SEP隔离区(Quarantine)
- UE4 VR项目设置总结
- snort实验(一)
- 【题解】【AcWing】1526. 洗牌机
- 甜糖官方爱快docker
- [置顶]Ceph源码解析:PG peering
- Windows远程桌面怎么使用,看完马上学会!
- 齐岳:环糊精修饰Fe3O4磁性纳米复合材料|十二烷基硫酸钠(SDS)将Fe3O4磁性纳米粒子定量地修饰到多壁碳纳米管
- EPICS记录参考--计算输出记录(calcout)
热门文章
- 分布估计算法java_数理统计8:点估计的有效性、一致最小方差无偏估计(UMVUE)、零无偏估计法...
- ipv4服务器不显示怎么办,如何查看服务器ipv4地址
- Type interface xxx.XxxMapper is not known to the MapperRegistry解决方案
- java代码检查工具pmd_Java 代码检查工具 PMD
- 人生,总是懂得太慢,明白得太晚!
- C++/QT 贪吃蛇小游戏 界面设计
- 3296电位器调节工具
- 伯努利分布+朴素贝叶斯分类器の概率解释
- 将虚拟环境添加到Jupyter notebook中
- HCIA学习----第一天