前置准备
- 教程开始,我们默认相信小伙伴们对基本的域名购买及解析有了一定的认识和实践
- 一个正常的域名
- 一台公网服务器
域名解析操作
如:现在我们要设置frps的泛域名解析
- 设置二级域名 frp.xx.com 解析到服务器IP地址
- 设置泛域名 *.frp.xx.com 解析到二级域名 frp.xx.com
申请证书
我们申请https证书采用 acme.sh 脚本 github教程地址 点这里参考
- 先安装脚本
curl https://get.acme.sh | sh
安装后默认位置在 ~/.acme.sh/
上面这个目录默认是隐藏的 可以输入Tab补齐切换
可以设置别名 alias acme.sh=~/.acme.sh/acme.sh生成证书 有2种模式,http和dns模式
我们采用的是dns模式,域名服务商为阿里云
可以到下面链接设置RAM子用户即可,注意用户权限设置http dns权限,可以参考下图
https://ram.console.aliyun.com/users
- 设置ali_key & ali_secret
export Ali_Key="xxxxxxxx"
export Ali_Secret="xxxxxxxx"
- 生成泛域名证书
acme.sh --issue -d *.youdomain.com" --dns dns_all
执行后生成证书在 *.youdomain.com 文件夹
- 配置Nginx设置
server {
listen 80 default_server;
listen [::]:80 default_server;
rewrite ^ https://$http_host$request_uri? permanent; #https跳转到https,永久重定向
}
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl_certificate "/etc/nginx/ssl/fullchain.cer";
ssl_certificate_key "/etc/nginx/ssl/*.youdomain.com.key";
root /home/youdomain/www;
index index.html;
}
- 安装证书
sudo ./acme.sh --installcert -d *.youdomain.com \
--key-file /etc/nginx/ssl/*.youdomain.com.key \
--fullchain-file /etc/nginx/ssl/fullchain.cer \
--reloadcmd "service nginx force-reload"
- service nginx force-reload 可以重新加载证书
- nginx 的配置 ssl_certificate 使用 /etc/nginx/ssl/fullchain.cer ,而非 /etc/nginx/ssl/.cer ,否则 SSL Labs 的测试会报 Chain issues Incomplete 错误
- 重新生成证书
sudo ./acme.sh --renew -d *.youdomain.com --force