acme云服务器生成证书_使用 acme.sh 申请 SSL 证书并且定期自动更新
在我们的实际项目生产过程中往往需要为部署的服务和域名配置 SSL 证书,可以采用的方法有很多种,例如可以申请阿里云的免费 SSL 证书,或者也可以使用 CloudFlare 的 SSL 服务。本文介绍了一种使用 acme.sh 脚本工具来申请 Let’s Encrypt! 免费的 SSL 证书,并能够在证书快过期时自动重新申请新证书。这样减轻了运维的负担,不需要再去记录证书的过期时间,也不需要再手动申请新证书和手动进行更新了。
一、安装 acme.sh 脚本
acme.sh 的脚本安装非常简单,只需要在终端中执行如下命令:
1curl https://get.acme.sh | sh
(如果系统未安装 curl 工具,请先进行安装)
二、验证域名并生成证书
acme.sh 验证域名的方式一般有两种方式:HTTP 验证和 DNS 验证。
HTTP 验证的方式是需要往域名特定的 url 下面放置一个 txt 文件,用于验证你确实拥有该域名。
本文推荐的方式是使用 DNS 验证的方式,使用这种方式可以通过使用域名解析商提供的 API 自动添加 DNS 的 txt 记录来完成验证,是最简单、最快捷的方式。使用这种方式无需验证 IP,可以方便地实现 SSL 证书的自动申请和续签。
acme.sh 目前支持阿里云,CloudFlare,DNSpod,Cloudxns,Godaddy 以及 ovh 等数十种解析商的 API 自动集成,本文以阿里云和 CloudFlare 为例来介绍如何来验证域名。
1. 阿里云(Aliyun)
如果你的域名解析商是阿里云,那么你可以采用这种方式来验证域名。
首先,你需要为阿里云账号创建一个子账号来为更新 DNS 解析记录的操作申请一个 API Key,访问阿里云 RAM 访问控制,创建一个用户。
我们可以创建一个 acme 用户:
在分配权限时,分配 AliyunDNSFullAccess 的权限:
之后会分配 Key 和 Secret,这部分数据需要妥善保存。
可以将 Key 和 Secret 放到终端的环境变量中:
1vi ~/.bashrc
把 Key 和 Secret 添加到文件末尾:
1
2export Ali_Key="xxxxxx"
export Ali_Secret="xxxxxx"
使环境变量生效:
1source ~/.bashrc
下面执行如下命令来验证域名(以 example.com 域名为例)并生成证书:
1acme.sh --issue --dns dns_ali -d example.com -d *.example.com
执行后的结果:
1
2
3
4[Fri Oct 23 13:21:09 CST 2020] Your cert is in /root/.acme.sh/ example.com/ example.com.cer
[Fri Oct 23 13:21:09 CST 2020] Your cert key is in /root/.acme.sh/ example.com/ example.com.key
[Fri Oct 23 13:21:09 CST 2020] The intermediate CA cert is in /root/.acme.sh/example.com/ca.cer
[Fri Oct 23 13:21:09 CST 2020] And the full chain certs is there: /root/.acme.sh/example.com/fullchain.cer
你可以将 nginx 等 SSL 配置指向该目录,也可以使用如下命令,将证书安装到指定目录:
1
2
3
4
5acme.sh --issue --dns dns_ali -d example.com -d *.example.com\
--installcert\
--key-file /etc/nginx/cert.d/example.com.key\
--fullchain-file /etc/nginx/cert.d/example.com.pem\
--reloadcmd "nginx -s reload"
2. CloudFlare
如果你的域名解析商是 CloudFlare,那么你可以采用这种方式来验证域名。
首先,你需要申请一个 CloudFlare 的 API KEY,打开 https://dash.cloudflare.com/profile/api-tokens ,Create Token:
按后续提示操作,生成具有更新 DNS 权限的 API Key。
可以将 CloudFlare 登录邮箱和 Key 放到终端的环境变量中:
1vi ~/.bashrc
把 Key 和 Secret 添加到文件末尾:
1
2export CF_Email="xxxxxx"
export CF_Key="xxxxxx"
使环境变量生效:
1source ~/.bashrc
下面执行如下命令来验证域名(以 example.com 域名为例)并生成证书:
1acme.sh --issue --dns dns_cf -d example.com -d *.example.com
执行后的结果:
1
2
3
4[Fri Oct 23 13:21:09 CST 2020] Your cert is in /root/.acme.sh/ example.com/ example.com.cer
[Fri Oct 23 13:21:09 CST 2020] Your cert key is in /root/.acme.sh/ example.com/ example.com.key
[Fri Oct 23 13:21:09 CST 2020] The intermediate CA cert is in /root/.acme.sh/example.com/ca.cer
[Fri Oct 23 13:21:09 CST 2020] And the full chain certs is there: /root/.acme.sh/example.com/fullchain.cer
你可以将 nginx 等 SSL 配置指向该目录,也可以使用如下命令,将证书安装到指定目录:
1
2
3
4
5acme.sh --issue --dns dns_cf -d example.com -d *.example.com\
--installcert\
--key-file /etc/nginx/cert.d/example.com.key\
--fullchain-file /etc/nginx/cert.d/example.com.pem\
--reloadcmd "nginx -s reload"
二、自动续期
执行完上述命令之后,脚本会在 cron 定时任务中加上一个定时任务,用于定期检查证书是否过期,并且自动更新 SSL 证书。使用如下命令可以查看该定时任务:
1crontab -l
三、更新 acme.sh
目前由于 acme 协议和 Let’s Encrypt! 会时常更新,因此需要对 acme.sh 脚本进行更新:
1acme.sh --upgrade
也可以开启自动更新:
1acme.sh --upgrade --auto-upgrade
关闭自动更新:
1acme.sh --upgrade --auto-upgrade 0
本文的版权归作者 罗远航 所有,采用 Attribution-NonCommercial 3.0 License。任何人可以进行转载、分享,但不可在未经允许的情况下用于商业用途;转载请注明出处。感谢配合!
acme云服务器生成证书_使用 acme.sh 申请 SSL 证书并且定期自动更新相关推荐
- acme云服务器生成证书_腾讯云DNSPOD,利用acme申请免费ssl证书。
有几个客户的域名是使用dnspod来管理域名dns,记录一下申请ssl证书的过程. acme.sh 官方链接 dnspod.cn 需要先申请api 操作密锁,路径是: 账号中心-密锁管理 1.下载ac ...
- phpstudy安装ssl证书_给网站安装免费SSL证书
突然有一天老板让我给用Flask写的小网站安装SSL证书,虽然之前没弄过但是感觉应该不难. 主要分为以下几个步骤: 购买域名 购买SSL证书 DNS(域名解析) 部署SSL证书 1. 购买域名 因为我 ...
- python sanic 设置ssl证书_配置自签https ssl证书
由于人们越来越重视网络安全,所以很多平台及系统都要求使用https方式接入.而且一些开源服务框架在调用时也只接受https请求,这将导致平时开发/测试时需要用到ssl证书的地方越来越多. 在2016年 ...
- 没有域名备案可以安装ssl证书吗?应用IP申请ssl证书的注意事项
ssl证书是一种安全性较大的安全证书,这种证书可以加密网站当中被传输的信息,防止重要信息被盗用.因此,很多企业如果有重要文件需要传输的时候,就会直接选择给网站配置ssl证书.由于ssl证书是配置在网站 ...
- acme云服务器生成证书_如何让docker 部署的nginx上通过acme.sh安装ssl/https 证书
本篇文章是教大家如何在docker部署的nginx上通过acme.sh安装ssl/https 证书. 由于文中例子是通过acme.sh的http验证方式生成证书,所以在此之前,必须保证你的网站能通过h ...
- ACME.SH 申请SSL证书(免费、自动更新)
1. 获取DNS密钥 (1)获取域名服务商AccessKey ID及AccessKey Secret 我使用的域名是阿里云,故需要去阿里云RAM管理平台获取: 其他服务商,可以去指定的服务商控制台获取 ...
- cloudflare免费证书_免费获取cloudflare的ssl证书
点击ssl 证书 选中 中间那个 保存文件 xxx.pem 一个 为xxx.key server { listen 80; #listen [::]:80; server_name xxx.ne ...
- acme.sh 申请通配符证书
acme.sh 申请通配符证书 docker中nginx为例 1. 不要忘记nginx的端口,映射80的同时还有443 ssl的端口 2. 安装socat sudo apt-get install s ...
- Coding Pages 申请 SSL 证书错误:urn:acme:error:unauthorized: Invalid response from http://xxxxx/
Coding Pages 申请 SSL/TLS 安全证书出现以下错误: urn:acme:error:unauthorized: Invalid response from http://www.xx ...
最新文章
- 全民直播CTO张云龙:已全面迁移至阿里云
- 【Linux】进程间通信-命名管道FIFO
- MongoDB经典故障系列一:数据库频繁启动失败怎么办?
- 【Linux】linux和Mac下命令vmstat
- python异常处理和断言
- redis 配置文件配置
- B18-iOS9的适配相关
- 鼠标右键菜单没有 新建 - 解决办法
- 最值得收藏的 搜狗输入法 常用快捷键使用, 让你的效率成倍增加
- python木马病毒_Python引导木马病毒(拓展篇)
- 百度地图LV1.5实践项目开发工具类bmap.util.jsV1.1
- kettle命令运行工具(pan、kitchen、carte)
- django实现qq一键登录(qq互联)
- IPhone 视图切换的的2种方法
- go语言学习-- chan与goroutine
- jQuery基础文档(持续更新)
- openFlow入门
- Nico的刷题日记(三)
- 零成本学arduino教程——74hc165扩展寄存器教程
- 图鉴:《100名互联网公司老板采访实录》
热门文章
- ubuntu下KDvelop中怎么显示行号
- eclipse使用git提交本地项目,提交至远程github上
- [开发笔记]-DataGridView控件中自定义控件的使用
- Eclipse-Java代码规范和质量检查插件-FindBugs
- WebStorm 2017.1增加对Vue.js的支持
- 从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler
- mysql 随机查询数据
- 将窗体显示在 PageControl 上。
- tensorflow中name_scope和variable_scope变量的使用
- 卷积神经网络迁移学习