在我们的实际项目生产过程中往往需要为部署的服务和域名配置 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 证书并且定期自动更新相关推荐

  1. acme云服务器生成证书_腾讯云DNSPOD,利用acme申请免费ssl证书。

    有几个客户的域名是使用dnspod来管理域名dns,记录一下申请ssl证书的过程. acme.sh 官方链接 dnspod.cn 需要先申请api 操作密锁,路径是: 账号中心-密锁管理 1.下载ac ...

  2. phpstudy安装ssl证书_给网站安装免费SSL证书

    突然有一天老板让我给用Flask写的小网站安装SSL证书,虽然之前没弄过但是感觉应该不难. 主要分为以下几个步骤: 购买域名 购买SSL证书 DNS(域名解析) 部署SSL证书 1. 购买域名 因为我 ...

  3. python sanic 设置ssl证书_配置自签https ssl证书

    由于人们越来越重视网络安全,所以很多平台及系统都要求使用https方式接入.而且一些开源服务框架在调用时也只接受https请求,这将导致平时开发/测试时需要用到ssl证书的地方越来越多. 在2016年 ...

  4. 没有域名备案可以安装ssl证书吗?应用IP申请ssl证书的注意事项

    ssl证书是一种安全性较大的安全证书,这种证书可以加密网站当中被传输的信息,防止重要信息被盗用.因此,很多企业如果有重要文件需要传输的时候,就会直接选择给网站配置ssl证书.由于ssl证书是配置在网站 ...

  5. acme云服务器生成证书_如何让docker 部署的nginx上通过acme.sh安装ssl/https 证书

    本篇文章是教大家如何在docker部署的nginx上通过acme.sh安装ssl/https 证书. 由于文中例子是通过acme.sh的http验证方式生成证书,所以在此之前,必须保证你的网站能通过h ...

  6. ACME.SH 申请SSL证书(免费、自动更新)

    1. 获取DNS密钥 (1)获取域名服务商AccessKey ID及AccessKey Secret 我使用的域名是阿里云,故需要去阿里云RAM管理平台获取: 其他服务商,可以去指定的服务商控制台获取 ...

  7. cloudflare免费证书_免费获取cloudflare的ssl证书

    点击ssl 证书 选中 中间那个 保存文件 xxx.pem   一个 为xxx.key server { listen 80; #listen [::]:80; server_name  xxx.ne ...

  8. acme.sh 申请通配符证书

    acme.sh 申请通配符证书 docker中nginx为例 1. 不要忘记nginx的端口,映射80的同时还有443 ssl的端口 2. 安装socat sudo apt-get install s ...

  9. 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 ...

最新文章

  1. 全民直播CTO张云龙:已全面迁移至阿里云
  2. 【Linux】进程间通信-命名管道FIFO
  3. MongoDB经典故障系列一:数据库频繁启动失败怎么办?
  4. 【Linux】linux和Mac下命令vmstat
  5. python异常处理和断言
  6. redis 配置文件配置
  7. B18-iOS9的适配相关
  8. 鼠标右键菜单没有 新建 - 解决办法
  9. 最值得收藏的 搜狗输入法 常用快捷键使用, 让你的效率成倍增加
  10. python木马病毒_Python引导木马病毒(拓展篇)
  11. 百度地图LV1.5实践项目开发工具类bmap.util.jsV1.1
  12. kettle命令运行工具(pan、kitchen、carte)
  13. django实现qq一键登录(qq互联)
  14. IPhone 视图切换的的2种方法
  15. go语言学习-- chan与goroutine
  16. jQuery基础文档(持续更新)
  17. openFlow入门
  18. Nico的刷题日记(三)
  19. 零成本学arduino教程——74hc165扩展寄存器教程
  20. 图鉴:《100名互联网公司老板采访实录》

热门文章

  1. ubuntu下KDvelop中怎么显示行号
  2. eclipse使用git提交本地项目,提交至远程github上
  3. [开发笔记]-DataGridView控件中自定义控件的使用
  4. Eclipse-Java代码规范和质量检查插件-FindBugs
  5. WebStorm 2017.1增加对Vue.js的支持
  6. 从源码浅析MVC的MvcRouteHandler、MvcHandler和MvcHttpHandler
  7. mysql 随机查询数据
  8. 将窗体显示在 PageControl 上。
  9. tensorflow中name_scope和variable_scope变量的使用
  10. 卷积神经网络迁移学习