安装依赖

#Debian/Ubuntu 命令
apt update -y          
apt install -y curl    
apt install -y socat
apt install curl wget -y
#CentOS 命令    
yum update -y          
yum install -y curl   
yum install -y socat   
yum install curl wget -y 

安装 Acme 脚本

curl https://get.acme.sh | sh

80 端口空闲的证书申请方式
自行更换代码中的域名、邮箱为你解析的域名及邮箱

~/.acme.sh/acme.sh --register-account -m xxxx@xxxx.com
~/.acme.sh/acme.sh  --issue -d mydomain.com   --standalone

安装证书到指定文件夹
自行更换代码中的域名为你解析的域名

~/.acme.sh/acme.sh --installcert -d mydomain.com --key-file /root/private.key --fullchain-file /root/cert.crt

方法2: DNS 验证的方式申请证书

这种方式的好处是, 你不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证. 坏处是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。
Acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商
该方式可以申请多域名、泛域名证书,达到很多域名可以共用一张证书的目的。
设置 Cloudflare API 令牌

export CF_Key="4jnff7gjn4c701b6e27884f0da0hhfuei84de07552"
export CF_Email="admin@vpsxb.net"

验证 DNS 并申请证书

更改下面的域名为你自己的域名

~/.acme.sh/acme.sh --issue --dns dns_cf -d vpsxb.net -d *.vpsxb.net

DNS验证(手动模式)

这种方法官方是不推荐的,不能自动续期(即需要手动续签),但是可以有效解决申请通配符通配符证书dns验证失败的问题。

先运行一遍命令:

~/.acme.sh/acme.sh --issue -d bombstory.com -d *.bombstory.com --dns dns-01

然后出现报错,要求在dns解析里加入两行txt解析,然后加上–renew参数,再运行一遍即可

~/.acme.sh/acme.sh --issue -d bombstory.com -d *.bombstory.com --dns dns-01 --renew

安装证书到指定文件夹

默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的证书文件。
正确的使用方法是使用 –install-cert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置,比如下面的代码:

~/.acme.sh/acme.sh --installcert -d mydomain.com --key-file /root/cert/private.key --fullchain-file /root/cert/cert.crt
chmod -R 755 /root/cert

上面的 /root/private.key 以及 /root/cert.crt 是把密钥和证书安装到 /root 目录,并改名为 private.key 和 cert.crt。

或者:

生成的证书默认放在 acme.sh 的安装目录下,不应该直接使用该目录下的文件,因为这里面的文件都是内部使用, 而且目录结构可能会发生变化。可以使用 –install-cert 命令安装证书,把证书copy到相应的位置。比如 nginx:

~/.acme.sh/acme.sh --install-cert -d example.com \
--key-file  /path/to/keyfile/in/nginx/cert.key  \
--fullchain-file /path/to/fullchain/nginx/cert.pem \
--reloadcmd  "service nginx force-reload"

跟上的 –reloadcmd 命令,是指定重新加载服务器的命令,证书安装成功或自动更新之后会重新加载服务使新证书生效。

证书&脚本跟新

证书手动更新

~/.acme.sh/acme.sh --renew -d example.com --force

自动更新
安装 acme.sh 时会自动创建一个 cronjob,每天定期检查所有证书,如果证书需要更新会自动更新证书。
通过 crontab -l 查看 crontab 任务:

46 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

升级 Acme.sh 到最新版本

 ~/.acme.sh/acme.sh --upgrade

如果你不想手动升级, 可以开启自动升级:

 ~/.acme.sh/acme.sh  --upgrade  --auto-upgrade

撤销删除证书

如果要撤销一个证书,使用:

acme.sh --list
acme.sh --revoke -d mydomain.com