安装acme工具

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

source ~/.bashrc
acme.sh --register-account -m im@lianst.com

更换根证书

acme.sh --set-default-ca  --server zerossl

申请证书

web方式

acme.sh  --issue -d www.lianjiale.com -d lianjiale.com  --webroot  /data/wwwroot/www.lianjiale.com/

DNS方式

export HE_Username=<YOUR NAME>
export HE_Password=<YOUR PASSWORD>
 
export CF_Key="62b881f55580e507d454********"
export CF_Email="login email"
 

export DP_Id="AKID0oMTLxINBj0*************"
export DP_Key="RbU8VbQzHI2WjfKiqh**********"

常用dns验证

Cloudfare

acme.sh --issue --dns dns_cf -d  DOMAIN

he

acme.sh --issue --dns dns_he -d DOMAIN

Godaddy

acme.sh --issue --dns dns_gd 

Dnspod

acme.sh --issue --dns dns_dp  -d DOMAIN

安装证书

copy证书并指定nginx reload命令

acme.sh  --installcert  -d  wiz.nginx.top  \
        --key-file   /usr/local/nginx/conf/ssl/wiz.nginx.top.key  \
        --fullchain-file /usr/local/nginx/conf/ssl/wiz.nginx.top.cer \
        --reloadcmd  "/usr/local/nginx/sbin/nginx -s reload"

生成 dhparam.pem 文件

openssl dhparam -out /usr/local/nginx/conf/ssl/dhparam.pem 2048

配置nginx

server {
    listen       443 ssl http2 default_server;
    listen       [::]:443 ssl http2 default_server;
    server_name  www.lianjiale.com lianjiale.com;

    ssl_certificate /usr/local/nginx/conf/ssl/www.lianjiale.com.cer;
    ssl_certificate_key /usr/local/nginx/conf/ssl/www.lianjiale.com.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_dhparam /usr/local/nginx/conf/ssl/dhparam.pem;
    ...
}

自动续约

acme安装的时候就会自动添加crond计划任务来处理续约,当然也是可以手动来renew的。

### acme添加的crond
[root@VM-4-16-centos acme]# crontab -l
*/5 * * * * flock -xn /tmp/stargate.lock -c '/usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 &'
27 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

手动renew

acme.sh --cron -f

设置acme自动更新

acme.sh  --upgrade  --auto-upgrade

其他

注册用户

acme.sh --register-account -m im@lianst.com

颁发通配符

颁发通配符证书非常的简单,你只需要给一个通配符域作为-d参数。

acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf --keylength ec-256

检查证书到期时间

acme.sh --cron --home ~/.acme.sh/
  # [Thu 10 Mar 2022 04:15:54 PM CST] ===Starting cron===
  # [Thu 10 Mar 2022 04:15:54 PM CST] Renew: 'nginx.top'
  # [Thu 10 Mar 2022 04:15:54 PM CST] Skip, Next renewal time is: Mon 09 May 2023 06:38:32 AM UTC
  # [Thu 10 Mar 2022 04:15:54 PM CST] Add '--force' to force to renew.
  # [Thu 10 Mar 2022 04:15:54 PM CST] Skipped nginx.top_ecc
  # [Thu 10 Mar 2022 04:15:54 PM CST] ===End cron===

证书更新

重新申请签发证书, 设置定时任务后所有证书将每60天自动更新一次,当然您也可以强制更新证书:

acme.sh --renew -d example.com --force [--ecc]  # ecc 参数, 表明只是针对颁发的ECC证书。
acme.sh --renew -d example.com --force 

停止更新证书

您可以执行以下操作从更新列表中删除证书:

acme.sh --remove -d example.com [--ecc]

注意, 证书/密钥文件不会从磁盘中删除。

自动更新acme

启用自动升级保持acme.sh为最新版本,禁用自动更新。

acme.sh --upgrade --auto-upgrade
acme.sh --upgrade --auto-upgrade 0

查看证书列表

acme.sh --list

删除证书

acme.sh remove <SAN_Domains>