使用 acme.sh 申请 SSL 证书

标签: acme sh ssl | 发表时间:2024-09-23 10:57 | 作者:
出处:https://oldj.net

之前很长一段时间,这个博客一直在用云服务商提供的免费 SSL 证书,那个证书有一年有效期,也即一年只需要申请部署一次,因此全手动操作也不算麻烦,但现在免费 SSL 证书的有效期统一缩短为 3 个月了,意味着每 3 个月就要操作一次,这就让手动申请和部署变得麻烦起来了。

最近,我尝试了一下使用 acme.sh 申请 SSL 证书的方法,确实方便了不少,在这里记录一下。

安装 acme.sh

acme.sh 是一个实现 ACME 协议的脚本,主要用途是申请或更新免费 SSL 证书。运行以下命令即可安装:

  curl https://get.acme.sh | sh -s [email protected]

更多安装方式可见官方文档: https://github.com/acmesh-official/acme.sh

acme.sh 会被安装在 ~/.acme.sh 目录下。

手动申请证书

安装好 acme.sh 后,可以用以下命令申请证书:

  acme.sh --issue --dns -d mydomain.com -d "*.mydomain.com" --yes-I-know-dns-manual-mode-enough-go-ahead-please

记得把其中的 mydomain.com 换成你自己的域名。

上面的代码中,我申请了泛域名证书,所以同时添加了 mydomain.com*.mydomain.com 域名。需要注意的是, *.mydomain.com 不包含 mydomain.com,如果你希望证书除了包含 www.mydomain.com 这样的二级域名,也包含 mydomain.com 的话,记得把 mydomain.com 也加上。

另外, *.mydomain.com 也不包含更深的层级,比如它包含 home.mydomain.com,但不包含 app.home.mydomain.com 。如果你需要更深层级的泛域名,需要把对应的域名也填上。

还需要注意的是最后一个参数 --yes-I-know-dns-manual-mode-enough-go-ahead-please 。acme.sh 更希望用户使用自动申请证书的方式(见下一小节),如果你确实需要手动申请,需加上这个参数,否则命令不会正常执行。

如果一切顺利,acme.sh 命令会输出两段 TXT 信息,需要你 手动添加到对应域名的 DNS 解析中,以验证你确实对这个域名拥有权限。在证书申请完成之后,可以删除对应的 TXT 记录。

登录域名服务商(比如阿里云)后台,在域名解析中添加上对应的 TXT 记录,然后再运行以下命令,即可生成证书:

  acme.sh --renew -d mydomain.com -d "*.mydomain.com" --yes-I-know-dns-manual-mode-enough-go-ahead-please

证书会被保存在 ~/.acme.sh/ 目录下,包含以下四个文件:

  • mydomain.com.cer 证书
  • mydomain.com.key 密钥
  • ca.cer
  • fullchain.cer 全链路证书

其中在网站场景主要使用 fullchain.cer 文件和 mydomain.com.key 文件。

自动申请证书

可以看到,上面手动申请的步骤,主要的手动操作就是要为域名添加 TXT 记录以验证域名权限,acme.sh 支持让这个步骤自动化,即自动添加 TXT 记录,并在验证完成之后自动删除对应的记录。

以阿里云为例(如果你的域名是在阿里云注册并解析的),首先需要去阿里云控制台获取一个 AccessKey,建议专门设置一个 RAM 用户,只开通 DNS 权限。

得到 AccessKey 之后,在命令行中执行以下命令:

  export Ali_Key="key"
export Ali_Secret="secret"

随后再执行以下命令,即可自动申请或更新证书了:

  acme.sh --issue --dns dns_ali -d mydomain.com -d "*.mydomain.com"

注意 --dns 参数后面的值为 dns_ali

一切顺利的话,证书申请会自动完成,并被保存在 ~/.acme.sh/ 目录下。

其他各大域名服务商的自动申请方式类似,具体可参见官方文档。

一些注意点

如果你使用了自动申请,AccessKey 会被明文保存在 ~/.acme.sh/account.conf 文件内,如果介意,可在申请完之后修改这个文件并删除对应的 AccessKey。

另外,使用自动申请后,acme.sh 会添加一条定时任务,每天自动检查证书是否需要更新。可运行以下命令查看当前系统的定时任务列表:

  crontab -l

现在 acme.sh 默认使用的证书颁发机构是 ZeroSSL,还有一些其他可选机构,比如 Let's Encrypt。可以用 --set-default-ca 修改默认证书颁发机构,比如:

  acme.sh --set-default-ca --server letsencrypt

我没有修改 CA,在使用默认的 ZeroSSL 的证书,目前来看暂时没有遇到什么问题。

除了自动申请证书外,大部分网络服务商也支持自动上传 SSL 证书,不过这部分我还没有研究,后续如果觉得值得记录,会另外写文分享。

相关 [acme sh ssl] 推荐:

nginx配置ssl

- - 邢红瑞的blog
先生成网关证书 ,仿照CA模式.

SSL原理笔记

- - CSDN博客推荐文章
搜索SSL握手的原理,最多是网上转载的Alice和Bob的对话. 用生动、形象的场景说明了一个复杂SSL握手原理. 用公钥加密的数据只有私钥才能解密,相反的,用私钥加密的数据只有公钥才能解密,正是这种不对称性才使得公用密钥密码系统那么有用. 是一个验证身份的过程,目的是使一个实体能够确信对方是他所声称的实体.

SSL工作原理

- - 互联网 - ITeye博客
SSL 是一个安全协议,它提供使用 TCP/IP 的通信应用程序间的隐私与完整性. 超文本传输协议 (HTTP)使用 SSL 来实现安全的通信. 在客户端与服务器间传输的数据是通过使用对称算法(如 DES 或 RC4)进行加密的. 公用密钥算法(通常为 RSA)是用来获得加密密钥交换和数字签名的,此算法使用服务器的SSL数字证书中的公用密钥.

首款无线充电智能机 AQUOS PHONE f SH-13C

- 小熊TONY - cnBeta.COM
感谢@Android安卓星空 .的投递. 日本运营商NTT Docomo联合夏普发售了世界上第一款拥有无线充电功能的智能手机――AQUOS PHONE f SH-13C. AQUOS PHONE f SH-13C采用3.7英寸夏普qHD触控屏,分辨率为960*540像素,运行Android 2.3操作系统,配备800万像素CMOS摄像头,可录制720p MP4影片,自带夏普Qi无线充电器Wireless Charger SH01,将手机放置在上面即可充电,同时该机拥有IPX5/IPX7级别的防水功能和IP5X级别的防尘功能.

Sharp SH-01D 發表,Android 2.3、4.5吋螢幕與裸視3D

- Paul - 癮科技
(圖片來源:Impress Watch). 在 NTT DoCoMo 2011年發表會上,共推出 24 款新機,其中,Sharp 這款 SH-01D 最為引人注目. 除了超級吸引我的外型外,SH-01D 的規格也很棒,主要有以下亮點:. 4.5吋螢幕、解析度為 1280 × 720. 支援 IPX5 / IPX7 防水.

SSL窃听攻击实操

- snowflip - 狂人山庄 | Silence,声仔,吴洪声,奶罩
OK,我恶毒的心灵又开始蠢蠢欲动了. 今天带给大家的是SSL窃听攻击从理论到实际操作的成功例子. SSL窃听最主要的是你要有一张合法的SSL证书,并且证书名称必须和被攻击的网站域名一致. 目前各大CA都有很低廉价格的SSL证书申请,最低的价格只需要10美元不到,甚至还有一些域名注册商大批量采购这些证书,并且在你注册域名的时候免费送你一张.

Tomcat7配置双向SSL

- - CSDN博客推荐文章
//ca-cert.pem即为CA根证书,可将其下发到客户端,导入作为根证书.  如果按请求生成CA证书,由证书申请者生成请求文件certreq.txt. CA端执行签名,生成证书文件1.cer. 4.将证书导出成浏览器支持的.p12格式,密码changeit. 4.将证书导出成浏览器支持的.p12格式 :.

图解SSL/TLS协议

- - 阮一峰的网络日志
本周, CloudFlare宣布,开始提供Keyless服务,即你把网站放到它们的CDN上,不用提供自己的私钥,也能使用SSL加密链接. 我看了CloudFlare的说明( 这里和 这里),突然意识到这是绝好的例子,可以用来说明SSL/TLS协议的运行机制. 下面,我就用这些图片作为例子,配合我半年前写的 《SSL/TLS协议运行机制的概述》,来解释SSL协议.

SSL延迟有多大?

- - 阮一峰的网络日志
据说,Netscape公司当年设计 SSL协议的时候,有人提过,将互联网所有链接都变成HTTPs开头的加密链接. 这个建议没有得到采纳,原因之一是HTTPs链接比不加密的HTTP链接慢很多. (另一个原因好像是,HTTPs链接默认不能缓存. 自从我知道这个掌故以后,脑袋中就有一个观念:HTTPs链接很慢.

Netty SSL性能调优

- - ImportNew
嗯,这篇不长的文章,是一个晚上工作到三点的血泪加班史总结而成. 《 TLS协议分析 与 现代加密通信协议设计》 首先要感谢这篇文章,如果没有它,我可能还要花更多的时间才能完成. 文章有点长,能看多少是多少,每句都是收获. 目前(2015年)已经不安全,必须禁用. 互联网标准化组织ISOC接替NetScape公司,发布了SSL的升级版TLS 1.0版.