准备条件
- 一台可以连接的服务器,本文服务器系统使用
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;
}
总结
- 一个很简单的配置