使用 `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;
}

总结

  • 一个很简单的配置
相关推荐
qq_316411031 小时前
商用冷柜售后报修运维管理系统开发案例
运维
huainingning1 小时前
R4930-G7服务器(RAID-LSI-9560-LP-8i-4GB)网页方式做Raid方法
服务器
智码看视界1 小时前
Day59-阿里云ACK实战:生产级K8s集群部署与运维
运维·阿里云·kubernetes·k8s·日志监控·容器运维·阿里云ack
码视野3 小时前
基于 Vue3 + Element Plus 的【智慧新能源汽车充电桩运维调度与分时共享租赁系统】设计与实现(附完整源码与PRD)
运维·人工智能·汽车·vue3
qq_426003963 小时前
【UI自动化测试】UI自动化报错解决方案
运维·ui·自动化
网安蟹佬霸3 小时前
WAF绕过技术实战:从规则检测到编码绕过全指南(2026最新版,附Payload集与自动化脚本)
运维·安全·网络安全·架构·自动化·网安
小杨不想秃头4 小时前
信息安全工程师教程第二章密码学
运维·服务器·密码学
I'mChloe4 小时前
WGCLOUD怎么监控多台服务器?从Server、Agent 部署到监控面板实战
运维·服务器
Android系统攻城狮4 小时前
Linux PipeWire深度解析之pw_init调用流程与实战(八十三)
linux·运维·服务器·音频进阶·pipewire音频进阶
国科安芯5 小时前
轨道供电韧性:ASP4644四通道降压架构在低轨卫星平台电源管理中的适用性分析
运维·网络·数据库·嵌入式硬件·架构·状态模式·低轨卫星星座