Skip to content

acme.sh 证书申请

TIP

  • acme.sh 是一个开源的证书申请工具,支持多种 DNS API 申请证书,支持自动续期。

  • 本文档介绍如何使用 acme.sh 申请证书。

  • 文档地址:文档

1,安装

TIP

  • 会安装在 ~/.acme.sh 目录下。

  • 会自动创建一个 cronjob,每天 0:00 自动检测是否需要更新证书。

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

2,配置邮箱

bash
acme.sh --register-account -m my@example.com

3,申请证书

TIP

  • 默认生成的证书在 ~/.acme.sh/mydomain.com 目录下。

  • 默认zerossl申请的证书有效期为3个月,可以修改为letsencrypt申请的证书有效期为3个月。

  • 修改默认server命令: acme.sh --set-default-ca --server letsencrypt

bash
acme.sh --issue -d mydomain.com --nginx

4,安装证书

bash
acme.sh --install-cert -d yangliwei.top --key-file /usr/share/nginx/ssl/ylw.key --fullchain-file /usr/share/nginx/ssl/ylw.crt --reloadcmd "nginx -s reload"

6,nginx配置

TIP

  • acme申请证书后会检查地址,需要nginx配置一个地址用于检查,这里配置的是/.well-known/acme-challenge

  • nginx配置好后,需要重启nginx: nginx -s reload

bash
server {
  listen     80;
  server_name  yangliwei.top, www.yangliwei.top;
  
  location / {
   root   /usr/share/nginx/html/blog;
   try_files $uri $uri/ /index.html;
   index  index.html index.htm;
  }

  location /.well-known/acme-challenge {
        # 自己定义的位置,用于校验服务器所有权
        root /root/www/letsencrypt;
    }
  
 }

server {
  listen 443 ssl;
  server_name  yangliwei.top, www.yangliwei.top;
   ssl_certificate /usr/share/nginx/ssl/ylw.crt;     
   ssl_certificate_key  /usr/share/nginx/ssl/ylw.key;       
   ssl_session_timeout 5m;
   ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;      
   ssl_prefer_server_ciphers on;  

   location / {
     try_files $uri $uri/ @router;
     root   /usr/share/nginx/html/blog;
     index index.html;
   }

}

7,自动续期

TIP

  • 会自动创建一个 cronjob,每天 0:00 自动检测是否需要更新证书。

  • 不需要手动续期,acme.sh 会自动续期。

  • 证书续期后,会自动重启 nginx。

8,其他

TIP

  • 查看证书信息: acme.sh --list

  • 查看已安装信息: acme.sh --info -d yangliwei.top

  • 出错了怎么办: acme.sh --issue ..... --debug

杨利伟的博客