天天看點

在阿裡雲centos7.4上配置nginx免費的https證書,支援泛解析

在阿裡雲centos7.4上配置nginx免費的https證書,支援泛解析

一 原理說明:

使用 acme.sh 工具來生成證書,但為了方面采用的使用dns添加TXT記錄驗證方式,跟傳統的webroot有差別。這種方式更簡單,快速。

二 效果如下:

三 準備工作或者必要條件

  • 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           
然後去通路你的頁面,看看是不是有點炫酷了。

繼續閱讀