使用acme.sh创建ssl泛域名证书

in 分享 with 1 comment

github中文说明

一. 安装acme.sh

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

二. 根据dns解析自动生成证书(推荐使用,可以实现自动更新)

  1. 获取服务器dns key

  2. 申请地址(阿里云): https://ak-console.aliyun.com/#/accesskey
    (ps: dns的key一定要保存好!!!)

  3. 以阿里为例,设置dns key值给acme.sh

     cd /root/.acme.sh
     export Ali_Key="xxxx"
     export Ali_Secret="xxxxxxxxxxxxxxxxxxxxxxxxxxx"
    
  4. 生成证书(如需同一证书下泛域名使用, 则再后面添加 -d 域名)

     cd /root/.acme.sh
     ./acme.sh --issue --dns dns_ali -d *.域名 -d 域名
    

    此时证书已经生成 具体目录在 /root/.acme.sh/你的具体域名文件夹下,如果生成的是泛域名证书,则证书在主域名文件夹下(www.域名)


三. 复制证书至其他目录并保持自动更新

ps: 因acme.sh经常更新,目录结构有可能发生变化,为避免后续Nginx无法解析,请复制证书至本地其他位置
  1. 检查Nginx

     service nginx force-reload
    

    如果显示ok,则代表Nginx服务已经为系统服务
    如果失败,请参考添加 Nginx 为系统服务

  2. 成功后, 创建文件夹存放ssl文件

     cd /home
     mkdir ssl (创建文件夹 自定义文件夹名称和位置)
    
  3. 复制证书

     cd /root/.acme.sh
     ./acme.sh  --installcert  -d  主域名   \
         --key-file   /home/ssl/主域名.key \
         --fullchain-file /home/ssl/fullchain.cer \
         --reloadcmd  "service nginx force-reload"
    

    这一步代表复制证书成功后重启Nginx.(后续自动更新证书后也会自动执行这一步操作)

  4. 设置自动更新证书和项目

     cd /root/.acme.sh
     ./acme.sh  --upgrade  --auto-upgrade
    

    ps: 关闭自动更新(证书每3个月到期,如果不想使用的话需关闭自动更新)

     cd /root/.acme.sh
     ./acme.sh --upgrade  --auto-upgrade  0
    

四. 配置Nginx

    ......
    ......
    ssl_certificate /home/ssl/fullchain.cer; #证书位置
    ssl_certificate_key /home/ssl/主域名.key;