Nginx配置單項SSL以及雙向SSL


Https安全協議的由來?
在實現 HTTPS協議前,我們需要了解 SSL 協議,但其實我們現在使用的更多的是 TLS 加密通訊協議。
那么TLS是怎么保證明文消息被加密的呢?在OSI七層模型中,應用層是http協議,那么在應用層協議之下,我們的表示層,也就是 SSL 協議所發揮作用的一層,它通過(握手、交換秘鑰、告警、加密)等方式,使應用層 HTTP 協議沒有感知的情況下做到了數據的安全加密。

Nginx配置示例(單向)
server {
    listen 443 ssl;
    server_name www.oldxu.com;
    index index.html index.php;
    root /code;
    ssl on;
    ssl_certificate server.crt;
    ssl_certificate_key server.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!eNULL;
    ssl_prefer_server_ciphers on;
    ...
}
Nginx配置雙向認證

單向認證,僅僅是客戶端需要檢驗服務端證書是否是正確的,而服務端不會檢驗客戶端證書是否是正確的。
雙向認證,指客戶端驗證服務器端證書,而服務器也需要通過CA的公鑰證書來驗證客戶端證書。

雙向驗證的過程:
1.客戶端say hello 服務端
2.服務端將證書、公鑰等發給客戶端
3.客戶端CA驗證證書,成功繼續、不成功彈出選擇頁面
4.客戶端將自己的證書和公鑰發送給服務端
5.服務端驗證客戶端證書,如不通過直接斷開連接
6.客戶端告知服務端所支持的加密算法
7.服務端選擇最高級別加密算法使用客戶端公鑰加密后發送給客戶端
8.客戶端收到后使用私鑰解密並生成隨機對稱密鑰key,使用服務端公鑰加密發送給服務端
9.服務端使用私鑰解密,獲取對稱密鑰key
10.后續客戶端與服務端使用該密鑰key進行加密通信

#####服務端操作

server {
    listen 443 ssl;
    server_name www.oldxu.com;
    index index.html index.php;
    root /code;
    ssl on;
    ssl_certificate server.crt;
    ssl_certificate_key server.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!eNULL;
    ssl_prefer_server_ciphers on;
   
    ssl_client_certificate ca.crt; //這里的ca.crt是根證書公鑰文件
    ssl_verify_client on;
    ...
}


#####客戶端(瀏覽器)操作
如果不進行以下操作,瀏覽器會出現400錯誤。400 Bad Request(No required SSL certificate was sent)

# cd /etc/pki/ca_test/client
# openssl genrsa -out  client.key  //生成私鑰文件
# openssl req -new  -key client.key -out client.csr  //生成請求文件,填寫信息需要和ca.csr中的Organization Name保持一致

# openssl ca -in client.csr -cert /etc/pki/ca_test/root/ca.crt -keyfile /etc/pki/ca_test/root/ca.key -out client.crt -days 3650 
//簽名client.csr, 生成client.crt,此步如果出現


#1.將client.key轉換為pfx(p12)格式
# cd /etc/pki/ca_test/client
# openssl pkcs12 -export -inkey client.key -in client.crt -out client.pfx  //這一步需要輸入一個自定義密碼,一會在windows上安裝的時候要用到,需要記一下。

#2.將client.pfx拷貝到windows下,雙擊即可安裝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM