在阿裡雲centos7.4上配置nginx免費的https證書,支援泛解析
一 原理說明:
使用 acme.sh 工具來生成證書,但為了方面采用的使用dns添加TXT記錄驗證方式,跟傳統的webroot有差別。這種方式更簡單,快速。
二 效果如下:
- 根證書域名 https://wallbase.tv
- 泛解析域名 https://www.wallbase.tv
- 圖檔證明
在阿裡雲centos7.4上配置nginx免費的https證書,支援泛解析
三 準備工作或者必要條件
- 1 購買阿裡雲的的ecs伺服器,并且在阿裡雲已經購買域名
- 2 阿裡雲開通accessKey,該accessKey需要有操作管理dnsapi的權限,注意:acme使用的letsencript為了驗證域名是否是你自己擁有,會通過在域名解析記錄中添加一條TXT的解析記錄來做為驗證。
- 3 我所有操作都是/root/.acme.sh目錄下執行的
四 實施步驟
- 1 安裝nginx
## 安裝依賴元件,openssl-devel是必須的,因為nginx要使用ssl指令 # yum install -y gcc gcc-c++ # yum install –y openssl-devel pcre-devel zlib-devel # wget http://nginx.org/download/nginx-1.10.3.tar.gz # tar -zxvf nginx-1.10.3.tar.gz # cd nginx-1.10.3 # ./configure --prefix=/export/nginx-1.10.3 --with-http_stub_status_module --with-http_ssl_module # make && make install
- 2 安裝acme證書簽發工具
## 參考文檔https://github.com/Neilpang/acme.sh # pwd /root # curl https://get.acme.sh | sh
- 3 使用dns_ali生成證書
這裡需要把阿裡雲的accessKey通路設定環境變量中,因為acme在執行過程會去調用阿裡雲的dnsapi接口,添加TXT的解析記錄,在生成證書完畢後,會删除該記錄,在解析清單中沒有,但是你可以從解析曆史記錄中檢視的曆史資料的。
說名:一般不需要寫www.wallbase.tv而是使用*.wallbase.tv代替所有的泛解析域名。dns_ali表示使用的阿裡雲dns,當然acme還支援很多的dns提供商。
# export Ali_Key="LTAItQaq21eiKR66"
# export Ali_Secret="***********"
# ./acme.sh --issue --dns dns_ali -d wallbase.tv -d *.wallbase.tv
## 安裝證書檔案/root/.acme.sh/ssl/wallbase.tv
# mkdir -p ssl/wallbase.tv
# ./acme.sh --installcert -d wallbase.tv -d *.wallbase.tv --key-file ssl/wallbase.tv/privkey.pem --fullchain-file ssl/lockbur.com/fullchain.pem
官方說明: The Ali_Key and Ali_Secret will be saved in ~/.acme.sh/account.conf and will be reused when needed. 意思就是你第一次執行後,acem會保留的的賬号資訊。所有你執行完畢,就可以使用如下指令删除環境變量:
# env
# unset Ali_Key
# unset Ali_Secret
執行完上面的步驟之後,會在你的/root/.acme.sh/ssl/wallbase.tv目錄生産兩個檔案privkey.pem和fullchain.pem。沒錯這就是證書檔案了。
五 把證書安裝到nginx上去
- 1 第一個 server指令監聽的80端口,把所有http的通路重定向到https。
- 2 nginx配置的關鍵指令 listen 443 ssl;監聽443端口。
- 3 指定證書檔案的位置。這裡證書檔案可以泛解析,我二級域名都用同一個證書。
ssl_certificate /root/.acme.sh/ssl/wallbase.tv/fullchain.pem;
ssl_certificate_key /root/.acme.sh/ssl/wallbase.tv/privkey.pem;
- 4 nginx的配置檔案如下:
server {
listen 80;
server_name localhost;
rewrite ^(.*)$ https://$host$1 permanent;
}
server {
server_name wallbase.tv www.wallbase.tv alpha.wallbase.tv;
listen 443 ssl;
ssl_certificate /root/.acme.sh/ssl/wallbase.tv/fullchain.pem;
ssl_certificate_key /root/.acme.sh/ssl/wallbase.tv/privkey.pem;
location / {
limit_conn perip 10;
proxy_pass http://localhost:3000;
}
location /api {
limit_conn perip 10;
proxy_pass http://localhost:1062;
}
location ~* \.(eot|ttf|woff|svg)$ {
limit_conn perip 10;
add_header Access-Control-Allow-Origin *;
proxy_pass http://localhost:3000;
}
}
server {
server_name assets.wallbase.tv;
listen 443 ssl;
ssl_certificate /root/.acme.sh/ssl/wallbase.tv/fullchain.pem;
ssl_certificate_key /root/.acme.sh/ssl/wallbase.tv/privkey.pem;
location / {
root html;
}
location ~* \.(eot|ttf|woff|svg)$ {
limit_conn perip 10;
add_header Access-Control-Allow-Origin *;
}
}
- 5 最後還有關鍵一步,重新開機nginx
/export/nginx-1.10.3/sbin/nginx -s reload
然後去通路你的頁面,看看是不是有點炫酷了。