Nginx的HTTPS部署與安全性能優(yōu)化

nginx作為一款高性能的web服務(wù)器和反向代理服務(wù)器,被廣泛用于應(yīng)用部署和負(fù)載均衡。在安全環(huán)保意識(shí)的逐漸提高下,https也成為現(xiàn)代web應(yīng)用中必不可少的一環(huán)。本篇文章將重點(diǎn)介紹nginx的https部署和安全性能優(yōu)化。

一、Nginx的HTTPS部署

  1. 證書申請(qǐng)

首先需要去證書頒發(fā)機(jī)構(gòu)(CA)進(jìn)行SSL證書的申請(qǐng)。申請(qǐng)成功后,會(huì)得到一個(gè)證書文件(.crt)和一個(gè)私鑰文件(.key)。

  1. HTTPS配置

Nginx的HTTPS配置需要涉及到三個(gè)方面:HTTP轉(zhuǎn)發(fā)到HTTPS、Nginx的證書配置和HTTPS的配置。

(1)HTTP轉(zhuǎn)發(fā)到HTTPS

在Nginx的配置文件中,需要添加一段HTTP的配置,使得用戶訪問HTTP默認(rèn)端口80時(shí),能夠自動(dòng)跳轉(zhuǎn)到HTTPS的默認(rèn)端口443上。

server {     listen 80;     server_name example.com;     return 301 https://$server_name$request_uri; }

(2)Nginx證書配置

在Nginx的配置文件中,需要將剛剛申請(qǐng)的SSL證書和私鑰文件添加到配置文件中。

server {     listen 443 ssl;     server_name example.com;     ssl_certificate /path/to/cert.crt;     ssl_certificate_key /path/to/cert.key;     ... }

(3)HTTPS配置

需要配置HTTPS協(xié)議的具體選項(xiàng),例如啟用HTTP/2協(xié)議、禁用SSLv3等。

http2_push_preload on;  #啟用HTTP/2協(xié)議的推送預(yù)加載 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;  #指定啟用的TLS協(xié)議版本 ssl_ciphers EECDH+AESGCM:EDH+AESGCM:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM;  #指定加密套件 ssl_prefer_server_ciphers on;  #常用加密套件優(yōu)先順序?yàn)榉?wù)端指定的值 ssl_session_cache shared:SSL:10m;  #指定SSL session緩存 ssl_session_timeout 10m;  #指定SSL session超時(shí)時(shí)間

二、Nginx的安全性能優(yōu)化

在進(jìn)行HTTPS服務(wù)的部署后,還需要注意以下安全性能優(yōu)化方面的問題,以確保服務(wù)的穩(wěn)定和安全:

  1. 檢測(cè)OCSP響應(yīng)

OCSP(在線證書狀態(tài)協(xié)議)用于檢測(cè)證書是否已經(jīng)被廢除。在Nginx的HTTPS配置中,可以通過以下程序進(jìn)行OCSP響應(yīng)檢測(cè):

ssl_stapling on; ssl_stapling_verify on; ssl_trusted_certificate /path/to/fullchain.pem; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 10s;

其中關(guān)鍵點(diǎn)解讀如下:

  • ssl_stapling on 開啟OCSP響應(yīng)
  • ssl_stapling_verify on 開啟OCSP響應(yīng)驗(yàn)證
  • ssl_trusted_certificate /path/to/fullchain.pem 配置證書鏈
  • resolver 8.8.8.8 8.8.4.4 valid=300s 配置DNS解析器
  • resolver_timeout 10s 配置DNS解析時(shí)間
    DNS解析器需要配置成公認(rèn)的可信解析器,這里配置成Google公共DNS。
  1. 啟用HSTS

HSTS(HTTP嚴(yán)格傳輸安全)防止用戶被劫持到HTTP頁(yè)面,從而提高安全級(jí)別。在Nginx的HTTPS配置中,可以像下面這樣開啟HSTS:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

其中關(guān)鍵點(diǎn)解讀如下:

  • max-age=31536000 定義HSTS頭的持續(xù)時(shí)間
  • includeSubDomains 啟用所有子域名
  1. 啟用安全協(xié)議

默認(rèn)情況下,Nginx只啟用了TLSv1和TLSv1.2,如果需要啟用其他的加密協(xié)議,可以通過以下方式配置:

ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1;

其中關(guān)鍵點(diǎn)解讀如下:

  • TLSv1.3 定義啟用的加密協(xié)議
  1. 啟用HMAC密鑰算法

通過HTTPS傳輸?shù)臄?shù)據(jù),需要使用密鑰來加密數(shù)據(jù),使用HMAC (Hash-based message authentication code)可以提升數(shù)據(jù)傳輸時(shí)的安全性。在Nginx配置文件中啟用HMAC的方法如下:

ssl_ciphers ... !aNULL !eNULL !EXPORT !CAMELLIA !DES !MD5 !PSK !RC4 !SEED +AES256 !kEDH +SHA256 +HMAC;

其中關(guān)鍵點(diǎn)解讀如下:

  • AES256 啟用AES256加密算法
  • +SHA256 啟用SHA256哈希函數(shù)
  • +HMAC 啟用HMAC密鑰算法

結(jié)論

本篇文章介紹了Nginx的HTTPS部署和安全性能優(yōu)化的主要知識(shí)點(diǎn)。在現(xiàn)代Web應(yīng)用日益復(fù)雜的背景下,HTTPS的安全性和性能方面的要求也越來越高,作為系統(tǒng)管理人員,不斷更新自己的知識(shí)儲(chǔ)備,保持對(duì)新技術(shù)和新環(huán)境的專業(yè)化視野,是非常必要和重要的。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊11 分享