大部分对外网站已经抛弃http协议,强制https协议。腾讯云目前对企业用户不颁发免费的SSL证书。这里介绍一个免费开源自动续期SSL证书的Shell脚本。官网acme.sh
操作系统依赖openssl,socat,curl三个包,如果没有安装需要安装这三个包,用yum或者apt安装即可
- 安装
curl https://get.acme.sh | sh -s email=yanyi@gmail.com
acme.sh --register-account -m myemail@example.com --server zerossl
邮箱填入你在zerossl注册的时候填入的邮箱。注册成功会显示ACCOUNT_THUMBPRINT的KEY。
如果失败,进入/root/.acme.sh/ca/目录,删除acme.zerossl.com这个文件夹重新注册。
- 设置默认的CA为zerossl
acme.sh --set-default-ca --server zerossl
- 配置dnsapi
到acme的文档链接,查询你的域名供应商api的调用方法。我使用的是腾讯的DNSPod
文档说明需要申请一个ID与KEY
记录你的ID与KEY
将ID与KEY配置到系统的环境变量里面
export DP_Id="507xxx"
export DP_Key="8b9373bf3c5xxx"
- 自动申请证书
acme.sh --issue -d xxxx@xxx.com -d *.xxxx@xxx.com --dns dns_dp --server zerossl
申请泛域名通配符证书,–server指定颁发机构为zerossl,–dns dns_dp 指定dns的参数。
自动签发证书必须使用dns的方式才可自动续签
- 证书的安装
acme.sh --install-cert -d xxx.com \
--key-file /etc/nginx/ssl/xxx.com.key \
--fullchain-file /etc/nginx/ssl/xxx.com.cer \
--reloadcmd "systemctl restart nginx.service"
脚本会在证书到期前的30天左右自动调用api自动签发证书并安装到设定的目录,reloadcmd后面的值是重启nginx使证书生效。
一年又省了5000多,免费目前够用,签发时间需要三个月更新一次,都是全自动的。后期如果需求不满足再申请购买专业的证书。
- 其他常用命令
acme.sh --h 查看帮助
acme.sh --list 列出证书
acme.sh --issue 申请证书
acme.sh --cron 检查证书是否快过期,更新所有证书
acme.sh --cron --force 不管证书是否临期,强制更新所有证书
acme.sh --renew-all 检查证书是否快过期,更新所有证书
acme.sh --renew-all --force 不管证书是否临期,强制更新所有证书
acme.sh --info 查看acme配置
acme.sh --info -d xxxx@xxx.com 查看域名的证书配置
acme.sh --renew -d xxx@xxx.com 只更新xxx@xxx.com证书
acme.sh --remove -d xxxx@xxx.com 移除更新xxx@xxx.com证书(这里的移除仅是不通过acme管理,不会自动续签)
acme.sh --revoke -d xxxx@xxx.com 吊销xxx@xxx.com证书
acme.sh --register-account -m myemail@example.com --server zerossl
关联zerossl账户,要先到zerossl注册好在执行这个命令,邮箱要对应
acme.sh --set-default-ca --server zerossl 设置默认的CA证书颁发机构为zerossl
acme.sh --issue -d xxxx@xxx.com -d *.xxxx@xxx.com --dns dns_dp --server zerossl
申请泛域名通配符证书,--server指定颁发机构为zerossl,--dns dns_dp 指定dns的参数
acme.sh --issue -d xxxx@xxx.com --dns dns_dp --server zerossl
申请xxxx@xxx.com域名证书,--server指定颁发机构为zerossl,--dns dns_dp 指定dns的参数
acme.sh --issue -d a.xxxx@xxx.com -d b.xxxx@xxx.com -d c.xxxx@xxx.com --dns dns_dp --server zerossl
申请多域名证书,--server指定颁发机构为zerossl,--dns dns_dp 指定dns的参数
acme.sh --upgrade 升级 acme.sh 到最新版
acme.sh --upgrade --auto-upgrade 开启自动升级
acme.sh --upgrade --auto-upgrade 0 关闭自动更新