前置准備
- 教程開始,我們默認相信小伙伴們對基本的域名購買及解析有了一定的認識和實踐
- 一個正常的域名
- 一台公網服務器
域名解析操作
如:現在我們要設置frps的泛域名解析
- 設置二級域名 frp.xx.com 解析到服務器IP地址
- 設置泛域名 *.frp.xx.com 解析到二級域名 frp.xx.com
申請證書
我們申請https證書采用 acme.sh 腳本 github教程地址 點這里參考
- 先安裝腳本
curl https://get.acme.sh | sh
注意:如果遇到以下錯誤提示,需要先安裝 socat 依賴包 yum install socat -y 再執行安裝命令。
It is recommended to install socat first
yum install socat -y
-
安裝后默認位置在 ~/.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 --dns dns_ali -d *.youdomain.com
執行后生成證書在 *.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