1. 程式人生 > >Nginx高階之HTTPS服務

Nginx高階之HTTPS服務

高階階段回顧:

Nginx高階之Rewrite規則

Nginx高階之高階模組(secure_link/secure_link_md5/geoip_module)

HTTPS原理

HTTPS協議較為安全的原因就是對資料進行了加密傳輸.

兩種加密方式:

① 對稱加密: 加密金鑰和解密金鑰是一樣的

② 非對稱加密: 加密金鑰和解密金鑰是不一樣的(分為公鑰和私鑰)

HTTPS協議同時用到了這兩種加密方式:

中間人偽裝成客戶端或者服務端劫持:

注: HTTPS之所以安全性高, 在於它能夠生成CA簽名證書, 該證書確保中間人無法獲取到該證書, 所以提高了資料傳輸的安全性.

生成金鑰和CA證書

準備工作: 確認已經安裝nginx和openssl

安裝nginx請參考我的nginx系列第一篇: Nginx基礎之簡介與快速安裝

yum安裝openssl: yum install openssl 和 yum install openssl openssl-devel

確認是否已安裝:

步驟一: 生成RSA金鑰

生成金鑰命令: openssl genrsa -idea -out [金鑰檔名稱] 1024

在這個過程中需要輸入密碼(自定義, 但需要記住, 下面的步驟需要提示輸入該密碼)

步驟二: 生成證書籤名請求檔案(CSR檔案)

生成CSR檔案命令: openssl req -new -key [金鑰檔名稱] -out [CSR檔名稱]

輸入相關資訊即可:

步驟三: 生成證書籤名檔案(CA檔案)

生成簽名檔案命令: openssl x509 -req -days 3650 -in [CSR檔名稱] -signkey [金鑰檔名稱] -out [生成的CRT檔名稱] 

配置HTTPS服務

是否開啟服務端的相應:

systax: ssl on | off;

default: ssl off;

context: http域/server域

ssl的證書檔案

systax: ssl_certificate file;

default: 無配置

context: http域/server域

ssl的證書密碼檔案

systax: ssl_certificate_key file;

default: 無配置

context: http域/server域

進入default.conf檔案進行配置: https協議的預設埠時443

配置蘋果要求的證書

準備工作:

① 伺服器所有的連線使用TLS1.2以上的版本(openssl 1.0.2)

② HTTPS證書必須使用SHA256以上雜湊演算法簽名

③ HTTPS證書必須使用RSA 2048位或ECC 256位以上公鑰演算法

④ 使用前向加密技術

升級openssl:

檢視openssl的版本命令: openssl + version

如果需要升級, 請按下面的步驟:

cd /opt/opensslDownload
wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz
tar -zxvf openssl-1.0.2k.tar.gz
cd openssl-1.0.2k
./config --prefix=/usr/local/openssl
make && make install
mv /usr/bin/openssl /usr/bin/openssl.OFF
mv /usr/include/openssl /usr/include/openssl.OFF
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
echo "/usr/local/openssl/lib" >>/etc/ld.so.conf
ldconfig -v
openssl version -a

將以上程式碼寫入一個.sh的檔案, 執行該檔案 sh ./[.sh檔案的檔名稱]

結果:

由key金鑰直接生成CRT簽名:

命令: openssl req -days 3650 -x509 -sha256 -nodes -newkey rsa:2048 -keyout [金鑰檔名稱] -out [生成的CRT檔名稱]

進入default.conf配置:

引用New-Milky-Way.crt檔案

重啟nginx: 訪問https://ip/

注: 是使用https://訪問而不是http://訪問.

HTTPS服務的優化

① 啟用keepalive長連線

② 設定ssl session快取

default.conf的配置: