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

准备条件

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

安装 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;
}

总结

  • 一个很简单的配置
相关推荐
70asunflower4 分钟前
Linux 性能排查分析完全教程
linux·运维
兵bing1 小时前
Docker Compose 配置文件归纳总结-千问
运维·docker·容器
IT小盘2 小时前
17-构建Prompt测试集-提示词优化不再凭感觉
服务器·windows·prompt
INNOVIX稳石机器人2 小时前
从“存得下”到“管得活”:稳石四向穿梭车如何重塑密集仓储新逻辑?
大数据·运维
2401_858286112 小时前
OS81.【Linux】基于环形队列的多生产者-多消费者模型
linux·运维·服务器·环形队列
U-Mail邮件系统2 小时前
企业邮箱搭建用自建还是租用?合规、成本与安全性对比解析
服务器·网络·企业邮箱系统
X1A0RAN3 小时前
Jenkins Pipeline 变量打印指南
运维·servlet·jenkins
吴爃3 小时前
小微企业 SRE 稳定性建设(二):上线前 P0 验收项目
运维·可用性测试·稳定性·故障
月落归舟3 小时前
深入浅出:短信验证码登录场景下的 Nginx 负载均衡与 Session 共享
运维·nginx·负载均衡
llilian_163 小时前
基于PCI总线校时时钟同步卡的高精准授时解决方案
大数据·服务器·功能测试·单片机