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

总结

  • 一个很简单的配置
相关推荐
云和数据.ChenGuang3 分钟前
运维面试题之oracle和mysql单表最大容量
运维·mysql·oracle
互联网老欣3 分钟前
2025年保姆级教程:阿里云服务器部署Dify+Ollama,打造专属AI应用平台
服务器·阿里云·ai·云计算·dify·ollama·deepseek
酷柚易汛智推官17 分钟前
Fastlane赋能移动研发:从全流程自动化到工程效能升级
运维·自动化·酷柚易汛
落798.22 分钟前
Genlogin × Bright Data,一键解锁自动化采集的高成功率方案
运维·自动化·数据采集·亮数据
羑悻的小杀马特32 分钟前
轻量跨云·掌控无界:Portainer CE + cpolar 让远程容器运维像点外卖一样简单——免复杂配置,安全直达对应集群
运维·网络·安全·docker·cpolar
L***86531 小时前
Failed to restart nginx.service Unit nginx.service not found
运维·nginx
悦悦欧呐呐呐呐1 小时前
数据库事务是什么,怎么用的
服务器·数据库·oracle
十六年开源服务商2 小时前
WordPress运维服务怎样提供客户服务支持
运维
chxii2 小时前
PHP 配置全解析:Apache vs Nginx 的线程安全差异与 Windows 实战指南
运维·php
想唱rap3 小时前
C++ map和set
linux·运维·服务器·开发语言·c++·算法