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”然后输入电脑用户的账号、密码即可
⑫证书生成成功
参考文章:
文章不足之处还请斧正!
本文By:NonNullPointer --2024/09/15