Nginx 實現https雙向認證及負載均衡

Nginx安裝配置

  • 下載Nginx

下載地址:http://nginx.org/en/download.html

  • 安裝Nginx

A.Nginx不需要安裝,直接將下載的程序解壓縮到C盤根目錄(視實際情況而定,此處根目錄只供參考)。

Nginx解壓的目錄儘量使用英文路徑,且不要有空格,避免不必要的錯誤,如:C:\nginx

 

B.打開命令提示符CMD,進入nginx目錄,如:cd C:\nginx\nginx-1.12.2,運行命令: start nginx : 啓動nginx。

啓動Nginx後,在瀏覽器中訪問http://localhost,可以看到默認的歡迎頁

Nginx常用命令如下:

start nginx : 啓動nginx

nginx -s reload  :修改配置後重新加載生效

nginx -s reopen  :重新打開日誌文件

nginx -t -c C:\nginx\nginx-1.12.2\conf\nginx.conf 測試nginx配置文件是否正確

nginx -s stop  :快速停止nginx

nginx -s quit  :完整有序的停止nginx

OpenSLL安裝配置

  • 獲得OpenSLL

Windows環境建議下載編譯好的包,直接安裝。下載地址: http://slproweb.com/products/Win32OpenSSL.html

  • 安裝OpenSSL

1、雙擊Win64OpenSSL-1_1_1a.exe

2、選擇安裝目錄(安裝目錄建議不要存在空格)

3、選擇資源文件存放路徑,點擊安裝完成安裝

  • 配置OpenSSL

設置環境變量,例如工具安裝在C:\OpenSSL-Win64,則將C:\OpenSSL-Win64\bin;複製到Path中
https://img-blog.csdn.net/20180703165756830?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poYTY0NzYwMDM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

打開命令行程序cmd(以管理員身份運行),進入 Openssl 所在目錄,運行以下命令確認是否安裝成功

openssl 或直接執行 start C:\OpenSSL-Win64\bin\openssl.exe

https://img-blog.csdn.net/20180703170142488?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poYTY0NzYwMDM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

 

雙向認證

  1. 使用openssl生成證書

創建一個文件夾存放生成的證書,如:“C:/SSLKeys”.打開命令控制檯,進入C:/SSLKeys目錄

  • 生成根級證書

1、創建根證私鑰

openssl genrsa -out root-key.key 1024

2、創建根證書請求文件

openssl req -new -out root-req.csr -key root-key.key

3、自籤根證書

openssl x509 -req -in root-req.csr -out root-cert.cer -signkey root-key.key -CAcreateserial -days 3650

創建根證書請求時,會讓填寫信息,其中國家,省市,公司等需要和後面的證書保持一致.後面challenge password的地方直接回車就好。

  • 生成服務端證書

1、生成服務端key

openssl genrsa -out server-key.key 1024

2、生成服務端請求文件

openssl req -new -out server-req.csr -key server-key.key

3、生成服務端證書(root證書,rootkey,服務端key,服務端請求文件這4個生成服務端證書)

openssl x509 -req -in server-req.csr -out server-cert.cer -signkey server-key.key -CA root-cert.cer -CAkey root-key.key -CAcreateserial -days 3650

創建根證書請求時,會讓填寫信息,其中國家,省市,公司等需要跟創建根證書時填寫一致。

  • 生成客戶端證書

1、生成客戶端key

openssl genrsa -out client-key.key 1024

2、生成客戶端請求文件

openssl req -new -out client-req.csr -key client-key.key

3、生成客戶端證書(root證書,rootkey,客戶端key,客戶端請求文件這4個生成客戶端證書)

openssl x509 -req -in client-req.csr -out client-cert.cer -signkey client-key.key -CA root-cert.cer -CAkey root-key.key -CAcreateserial -days 3650

4、生成客戶端p12格式根證書(密碼設置123456)

openssl pkcs12 -export -clcerts -in client-cert.cer -inkey client-key.key -out client.p12

 

創建根證書請求時,會讓填寫信息,其中國家,省市,公司等需要跟創建根證書時填寫一致。

  • 生成證書

經過上面的操作,我們生成的證書如下:

  • 證書的配置
  1. 服務器Niginx配置

修改Nginx配置文件C:\nginx\nginx-1.12.2\conf\nginx.conf:

在server上方新增:

upstream test{ 

        server 192.168.10.1:8080 weight=2;    #服務器A的訪問ip和端口 

        server 192.168.10.2:8080 weight=1;    #服務器B的訪問ip和端口

}

修改server配置爲:

server {

        listen       443 ssl;

        server_name  localhost;


        ssl_certificate      C:/SSLKeys/nginx/server-cert.cer; #server證書公鑰

        ssl_certificate_key  C:/SSLKeys/nginx/server-key.key; #server私鑰

             ssl_client_certificate C:/SSLKeys/nginx/root-cert.cer;  #根級證書公鑰,用於驗證各個二級client

             ssl_verify_client on;  #開啓客戶端證書驗證 


        ssl_session_cache    shared:SSL:1m;

        ssl_session_timeout  5m;


        ssl_ciphers  HIGH:!aNULL:!MD5;

        ssl_prefer_server_ciphers  on;


        location / {

            root   html;

            index  index.html index.htm;

                    proxy_pass  http://test; 

                    proxy_redirect  default;

        }

    }   

Nginx配置最終如下(下圖爲nginx.conf修改部分):

port:注意SSL認證的端口,修改爲443接口,避免瀏覽器訪問時還需要輸入端口號。

參考上述啓動Nginx的方式啓動Nginx,在瀏覽器中輸入

https://ip/index。以下爲IE顯示效果:

       點擊繼續瀏覽此網站,則出現400錯誤,是因爲我們客戶端證書還沒有導入。

  • 客戶端證書導入

1、雙擊“client.p12”導入客戶端證書(默認會添加到IE瀏覽器,Firefox需要自己添加你的證書client.p12)

再次使用瀏覽器訪問服務端,瀏覽器會讓我們選擇使用的證書。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章