仅需四步即可完成免费域名证书自动申请与续期

RoyKe
1年前发布

随着google近些年的推行,https加密传输协议已经是目前安全上网的必备要求;CA证书是实现https的基础,目前随着Let’s Encrypt服务商的免费证书有效期从一年缩短到3个月,手动申请更新维护证书非常繁琐,甚至证书遗漏续期导致的服务下线会带来更大损失。
为此,本文使用开源证书申请维护项目acme.sh简单几步即可实现域名证书申请与永久自动更新

  1. 安装acme.sh
    注意:运行前,请将email替换为自己实际使用邮箱地址

    curl https://get.acme.sh | sh -s email=my@example.com
  2. 为acme.sh创建别名

    alias acme.sh='/root/.acme.sh/acme.sh'
  3. 申请通配符证书流程:需要在服务器上设置域名dns解析信息,具体步骤如下:(以cloudflare dns解析为例)其余域名解析商配置设置参考:官方dns解析配置文档

    • 在域名解析服务商处,生成账户授权token并设置为服务器环境变量
    export CF_Token="***"
    • 获取所需要解析域名的token信息
    export CF_Zone_ID="***"
    export CF_Account_ID="***"
    • 运行acmh脚本,自动进行域名校验并生成域名通配符证书
    acme.sh --issue --dns dns_cf -d 域名.com -d "*.域名.com"
  4. 安装证书(以nginx为例)
    脚本生成证书保存在/root/.acme.sh里,建议通过官方安装脚本来将证书复制到指定目录,因为使用安装脚本能够在acme更新证书时,同步更新被安装位置对证书并支持运行指定命令,以nginx为例,可在证书自动更新时同步更新nginx目录下的证书信息并重启nginx服务,真正意义上实现证书与服务自动更新
    注意:请先在nginx目录下创建需要存放证书文件的目录

    acme.sh --install-cert -d 域名.com 
    --key-file /etc/nginx/ssl/域名.com.key 
    --fullchain-file /etc/nginx/ssl/域名.com.cer 
    --reloadcmd "systemctl reload nginx"
  5. nginx配置
    通过上述步骤,证书已被安装到nginx下的自定义目录内,并将自动在证书更新时运行systemctl reload nginx重新挂载nginx服务
    在nginx配置文件内指定证书即可开始https之旅啦!

    server {
         listen 80;
         server_name 域名.com;
    
         # 将所有 HTTP 请求重定向到 HTTPS
         return 301 https://$host$request_uri;
     }
    
     server {
         listen 443 ssl;
         server_name 域名.com;
    
         # 证书路径
         ssl_certificate /etc/nginx/ssl/域名.com.cer;
         ssl_certificate_key /etc/nginx/ssl/域名.com.key;
    
         # 建议的 SSL 配置
         ssl_protocols TLSv1.2 TLSv1.3;
         ssl_ciphers HIGH:!aNULL:!MD5;
         ssl_prefer_server_ciphers on;
    
         root /home/web/actions;  # 网站根目录
             index index.html index.htm;  # 默认首页文件
    
             location / {
                 try_files $uri $uri/ =404;
             }
     }
©原创版权声明
THE END
喜欢就支持一下吧
点赞 0 分享 收藏
评论 抢沙发
取消
易航博客