使用 `acme.sh` 申请 `Let‘s Encrypt` 证书部署服务器

准备条件

  • 一台可以连接的服务器,本文服务器系统使用 linux 命令,以阿里云的 ECS 为例
  • 可以使用其它的,必须是可执行 linux 命令的服务器,例如 CentOS、Ubuntu 等

安装 acme.sh

  • 不会 acme.sh 没关系,甚至你不需要知道他是用来干嘛的,下面使用的都是很简单的命令
  • 连接服务器,这里以 xshell 为例
  • biaov@qq.com: 替换成你自己的邮箱地址
sh 复制代码
# 安装命令
curl https://get.acme.sh | sh -s email=你的邮箱
# 例如
curl https://get.acme.sh | sh -s email=biaov@qq.com
  • 安装完成之后查看是否安装成功
sh 复制代码
acme.sh -v

申请证书

  • 域名和域名访问的目录最好是能访问的,因为它会做校验,在该目录下生成一条校验记录,校验完成之后会自动删除
  • 如果域名和目录不匹配则会报错,错误日志在 /root/.acme.sh/.acme.sh.log 里面查看即可,如果错误码是3,则表示路径不对
sh 复制代码
acme.sh --issue -d 域名 -w 域名访问的目录
# 例如
acme.sh --issue -d biaov.cn -w /www/

申请成功

  • 申请成功之后,会在 /root/.acme.sh/域名_ecc 目录下生成证书文件
  • 然后使用 nginx 配置即可

使用脚本配置多个域名

  • 为了方便维护,可以使用脚本配置多个域名,脚本如下
  • 一个域名对应一个目录
  • --key-file: 自定义证书生成的目录
  • acme-config.sh
sh 复制代码
#!/bin/bash
~/.acme.sh/acme.sh --issue \
-d biaov.cn -w /www/home/ \
-d demo.biaov.cn -w /www/demo/ \
--key-file /www/certs/key.pem \
--fullchain-file /www/certs/cert.pem \
  • 上传脚本文件
  • 执行脚本
sh 复制代码
# 这个保证你当前目录和脚本文件处在同一目录,不然使用绝对目录执行
./acme-config.sh
# 或者
# /www/acme-config.sh

附带 nginx 配置

  • /www/certs/cert.pem: 路径为前面配置的 --fullchain-file 路径
  • /www/certs/key.pem: 路径为前面配置的 --key-file 路径
  • 因为下面有许多重复的,不方便维护,所以可以使用单个文件 include 引入
sh 复制代码
server {
    listen       443 ssl;
    server_name  biaov.cn;

    ssl_certificate      /www/certs/cert.pem;
    ssl_certificate_key  /www/certs/key.pem;

    index  index.html index.htm;

    root   /www/home;
    location / {
        try_files $uri $uri/ /index.html;
    }
}

server {
    listen       443 ssl;
    server_name  demo.biaov.cn;

    ssl_certificate      /www/certs/cert.pem;
    ssl_certificate_key  /www/certs/key.pem;

    index  index.html index.htm;

    root   /www/demo;
    location / {
        try_files $uri $uri/ /index.html;
    }
}
  • 单个文件引入
  • ssl.conf
sh 复制代码
listen       443 ssl;

ssl_certificate      /www/certs/cert.pem;
ssl_certificate_key  /www/certs/key.pem;

index  index.html index.htm;

location / {
    try_files $uri $uri/ /index.html;
}
  • nginx.conf
sh 复制代码
server {
  include      ssl.conf;
  server_name  biaov.cn;
  root         /www/home;
}
server {
  include     ssl.conf;
  server_name demo.biaov.cn;
  root        /www/demo;
}

总结

  • 一个很简单的配置
相关推荐
志栋智能2 小时前
运维超自动化的版本控制与回滚机制
运维·自动化
中云DDoS CC防护蔡蔡2 小时前
DDOS和CC攻击谁更可怕
运维·服务器·经验分享·网络安全·ddos
Ruiery2 小时前
Linux 6.6内核内存管理深度解析(十六):mmap — 用户态“申请内存“的真相
linux·运维·服务器
ClickHouseDB2 小时前
ClickHouse Cloud 与 Snowflake 实时性价比对比:CostBench 测试中的 412 倍差距来
运维·数据库·系统架构
欧米欧2 小时前
Linux系统篇(七),环境变量的底层溯源,核心获取机制与安全应用
linux·运维·服务器
Ruiery3 小时前
Linux 6.6内核内存管理深度解析(十八):KASLR 内核地址空间随机化
linux·运维·服务器·安全
todoitbo3 小时前
群晖NAS部署JmalCloud:Docker安装、文件管理、博客与公网访问完整教程
运维·docker·容器
时间售卖铺3 小时前
触发器与函数实战:MySQL高效编程秘诀
运维·数据库·mysql·云原生
前端精髓4 小时前
调用大模型API
运维·服务器·microsoft
跨境小彭4 小时前
Temu 全托管模式下,SKU 利润核算的实践复盘
大数据·运维·人工智能·自动化·temu