使用acme.sh创建自己的第一个https证书
acme.sh 是一款功能全面、轻量级的 ACME 协议客户端,专为获取和管理 SSL/TLS 证书而设计。它以纯 Shell 脚本实现,无需依赖复杂的运行环境,非常适合在服务器环境中使用。
因为是纯Shell实现,没有其他的依赖,跨平台支持比较好,可以完成证书的全流程管理。
常用的域名验证方式都支持,比如HTTP、DNS验证方式。
支持多个CA,有ZeroSSL和我们熟知的Let's Encrypt,默认使用的CA是ZeroSSL。
这篇文章介绍如何申请自己的第一个https证书。
获取域名
域名的获取途径有很多,国内的话可以选择阿里云,国外的话可以选择GoDaddy。
阿里云的购买页面,
安装acme.sh
因为是纯Shell的方式,acme.sh的安装比较简单,一条命令搞定,
curl https://get.acme.sh | sh -s email=my@example.com
配置API Key
下一节将使用DNS的域名验证方式,API Key是为了方便操作云服务提供商的解析服务。传统方式是手动将“acme.sh”生成的TXT记录配置到云解析中,这里使用“acme.sh”的一个有用功能,直接调用服务商的API接口自动更新云解析记录。
因为我使用的域名服务商是GoDaddy,访问这个链接获取API Key。

这里需要注意一点,“Environment”选择“Production”不要选择“ote”,“ote”是测试环境。
目前支持“acme.sh”通过API Key操作DNS解析的云服务提供商有非常多家,具体参考DNS API
生成证书
比如你有个域名是cool.com,两步生成自己的免费证书。
首先配置两个环境变量,acme.sh使用它来访问GoDaddy,以便更新DNS记录。
export GD_Key=3mMasdwf7cBJDT_EYaRdAz7PrQecadIp3qZcdyQ
export GD_Secret=gPxs9Axdi3yt02noxEaYYf
生成证书,
acme.sh --issue --dns dns_gd --dnssleep 600 -d cool.com
生成的证书默认会保存在“家目录/.acme.sh/cool.com_ecc/”下。将生成的证书拷贝到Apache或Nginx可以访问的位置即可。
更新证书,
acme.sh --renew --dns dns_gd -d cool.com
如果Web服务器和安装“acme.sh”的服务器是同一台,还可以直接将生成的证书安装到线上,这个功能笔者没有用过,有兴趣可以尝试下。
