acme实现免费获取、自动续签泛域名SSL证书

一、Linux

1、安装acme.sh(自动续签)

curl  https://get.acme.sh | sh -s email=admin@需要获取泛域名SSL证书的
#例:需要获取SSL证书的泛域名为*.frp.123.com
curl  https://get.acme.sh | sh -s email=admin@frp.123.com

PS:安装完成后将自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书(自动续签)

2、生成证书

PS:更多方式请参考官方文档

2.1 DNS方式+DNSPodApi

①获取DNSPod的Token

②键入命令
export DP_Id="图中的ID"
export DP_Key="图中的Token"
③生成证书
acme.sh   --issue   --dns dns_dp   -d 泛域名
#例:acme.sh   --issue   --dns dns_dp   -d *.frp.123.com

提示“Cert success”即为生成证书成功,后面打印了证书内容

2.2 Nginx方式

前提:

①泛域名只能通过dns方式

nginx配置中要有该域名的配置

生成证书
#如果不设置nginx配置文件路径会报错:Can not find nginx conf
acme.sh --issue -d 域名 --nginx nginx配置文件路径
#例:acme.sh --issue -d abc.frp.123.com --nginx /usr/local/nginx/conf/nginx.conf
如果提示以下内容或者生成/更新证书报错,请切换证书服务商

#切换证书服务商为letsencrypt
acme.sh --set-default-ca  --server  letsencrypt

3.copy/安装 证书(此处证书将给Nginx使用)

PS:更多示例请参考官方文档

引自官方文档:

前面证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方.

注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化.

正确的使用方法是使用 --install-cert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置

Nginx example:

#此命令执行时应为一整行,此处为了方便查看做了换行处理
acme.sh --install-cert -d 泛域名
--key-file 证书私钥保存路径
--fullchain-file 证书文件保存路径
--reloadcmd "重新加载命令"

#例:此处将证书文件“安装/Copy”到nginx目录下的acmesh文件夹内
#acme.sh --install-cert -d *.frp.123.com
#--key-file /usr/local/nginx/acmesh/frp.123.com/key.pem
#--fullchain-file /usr/local/nginx/acmesh/frp.123.com/cert.pem
#--reloadcmd "/usr/local/nginx/sbin/nginx -s stop && /usr/local/nginx/sbin/nginx"

#--reloadcmd参数用于重新加载nginx配置
#官方文档使用:--reloadcmd "service nginx force-reload"
#由于本文示例nginx没有注册为service,而且nginx实际上没有force-reload这一信号
#force-reload的实质为stop,然后start,所以写法如上所示。

4、开启acme.sh自动更新

acme.sh  --upgrade  --auto-upgrade

二、Windows

1、下载win-acme

根据电脑操作系统位数下载对应的压缩包即可,这里我下载的是64位的支持插件的版本

2、解压文件,运行wacs.exe

3、生成证书

①选择“M:生成证书(所有选项)”,输入“m”后按回车

②我们如何确定要包含在证书中的域?

选择“2:手动输入”,输入“2”后按回车

③输入需要申请证书的泛域名(*.acme.123.come)后回车,接着再次按回车确定

④选择域名验证方式

选择“6:手动创建验证记录”,输入“6”后回车

⑤选择私钥的加密类型

选择“2:RSA Key”,输入“2”后回车

⑥选择证书的保存方式、设置证书的保存路径

这里打算申请证书给nginx用的,所以选择“2”

设置证书保存路径前,请确保该路径已经存在

⑦设置私钥密码、后面几步如图使用默认选项,直接回车即可

这里选择“1:不设置私钥密码”

⑧查看并同意协议内容

Open in default application?(在默认应用程序中打开?)输入“n”即可

Do you agree with the terms?(你同意这些条款吗?)输入“y”即可

⑨输入邮箱

一般输入admin@泛域名即可,如:admin@frp.123.com

⑩验证域名所有权

根据控制台输出的信息,到dns设置对应的txt记录,记录设置完成后,返回控制台按回车

dns生效需要一定时间,若验证失败可输入“1:重试验证”

验证成功后,将刚刚的验证记录删除后,在控制台按回车

⑪选择开启定时自动续签

我这里没有开启自动续签。如果需要开启定时任务输入“y”然后输入电脑用户的账号、密码即可

⑫证书生成成功

参考文章:

acme.sh官方中文文档

acme.sh简单教程

文章不足之处还请斧正!

本文By:NonNullPointer --2024/09/15

最后修改:2025 年 01 月 05 日
如果觉得我的文章对你有用,请随意赞赏