摘要:證書主要有兩個功能加密和身份證明,通常需要購買,也有免費的,本文使用阿里云的一年免費期的證書。申請免費證書阿里云控制臺產(chǎn)品與服務(wù)安全云盾證書,點擊購買證書,選擇免費型補全申請簽發(fā)證書,然后下載證書。
關(guān)于 SSL 證書
有關(guān) SSL 的介紹可以參閱阮一峰老師的《SSL/TLS協(xié)議運行機制的概述》。
SSL 證書主要有兩個功能:加密和身份證明,通常需要購買,也有免費的,本文使用阿里云的一年免費期的ssl證書。
申請免費證書阿里云控制臺-產(chǎn)品與服務(wù)-安全(云盾)-SSL證書,點擊購買證書,選擇免費型DV SSL->補全申請簽發(fā)證書,然后下載證書。
配置證書進入nginx配置目錄,增加certs/文件夾,把剛剛下載的兩個文件上傳到certs/文件夾中。
對443端口和80端口進行監(jiān)聽,443端口要啟用ssl
server { listen 443; server_name bjubi.com; // 你的域名 ssl on; root /var/www/bjubi.com; // 前臺文件存放文件夾,可改成別的 index index.html index.htm;// 上面配置的文件夾里面的index.html ssl_certificate /etc/nginx/conf.d/certs/site2/www.site1.com.crt; ssl_certificate_key /etc/nginx/conf.d/certs/site2/www.site1.com.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { index index.html index.htm; } } server { listen 80; server_name www.site1.com;// 你的域名 rewrite ^(.*)$ https://$host$1 permanent;// 把http的域名請求轉(zhuǎn)成https }HTTPS服務(wù)器優(yōu)化 減少 CPU 運算量
SSL 的運行計算需要消耗額外的 CPU 資源,一般多核處理器系統(tǒng)會運行多個工作進程(worker processes),進程的數(shù)量不會少于可用的 CPU 核數(shù)。SSL 通訊過程中『握手』階段的運算最占用 CPU 資源,有兩個方法可以減少每臺客戶端的運算量:
激活keepalive長連接,一個連接發(fā)送更多個請求
復(fù)用 SSL 會話參數(shù),在并行并發(fā)的連接數(shù)中避免進行多次 SSL『握手』
這些會話會存儲在一個 SSL 會話緩存里面,通過命令ssl_session_cache配置,可以使緩存在機器間共享,然后利用客戶端在『握手』階段使用的seesion id去查詢服務(wù)端的 session cathe(如果服務(wù)端設(shè)置有的話),簡化『握手』階段。
1M 的會話緩存大概包含 4000 個會話,默認的緩存超時時間為 5 分鐘,可以通過使用ssl_session_timeout命令設(shè)置緩存超時時間。下面是一個擁有 10M 共享會話緩存的多核系統(tǒng)優(yōu)化配置例子:
http { #配置共享會話緩存大小 ssl_session_cache shared:SSL:10m; #配置會話超時時間 ssl_session_timeout 10m; server { #... #設(shè)置長連接 keepalive_timeout 70; #...使用 HSTS 策略強制瀏覽器使用 HTTPS 連接
HSTS – HTTP Strict Transport Security,HTTP嚴格傳輸安全。它允許一個 HTTPS 網(wǎng)站要求瀏覽器總是通過 HTTPS 來訪問,這使得攻擊者在用戶與服務(wù)器通訊過程中攔截、篡改信息以及冒充身份變得更為困難。
只要在 Nginx 配置文件加上以下頭信息就可以了:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains;preload" always;
max-age:設(shè)置單位時間內(nèi)強制使用 HTTPS 連接
includeSubDomains:可選,所有子域同時生效
preload:可選,非規(guī)范值,用于定義使用『HSTS 預(yù)加載列表』
always:可選,保證所有響應(yīng)都發(fā)送此響應(yīng)頭,包括各種內(nèi)置錯誤響應(yīng)
當用戶進行 HTTPS 連接的時候,服務(wù)器會發(fā)送一個Strict-Transport-Security響應(yīng)頭:
瀏覽器在獲取該響應(yīng)頭后,在max-age的時間內(nèi),如果遇到 HTTP 連接,就會通過 307 跳轉(zhuǎn)強制使用 HTTPS 進行連接,并忽略其它的跳轉(zhuǎn)設(shè)置(如 301 重定向跳轉(zhuǎn)):
307 跳轉(zhuǎn)Non-Authoritative-Reason響應(yīng)頭
加強 HTTPS 安全性HTTPS 基礎(chǔ)配置采取的默認加密算法是 SHA-1,這個算法非常脆弱,安全性在逐年降低,在 2014 年的時候,Google 官方博客就宣布在 Chrome 瀏覽器中逐漸降低 SHA-1 證書的安全指示,會從 2015 年起使用 SHA-2 簽名的證書,可參閱Rabbit_Run在 2014 年發(fā)表的文章:《為什么Google急著殺死加密算法SHA-1》
為此,主流的 HTTPS 配置方案應(yīng)該避免 SHA-1,可以使用迪菲-赫爾曼密鑰交換(D-H,Diffie–Hellman key exchange)方案。
首先在目錄/etc/ssl/certs運行以下代碼生成dhparam.pem文件:
openssl dhparam -out dhparam.pem 2048
然后加入 Nginx 配置:
#優(yōu)先采取服務(wù)器算法 ssl_prefer_server_ciphers on; #使用DH文件 ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #定義算法 ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"; #減少點擊劫持 add_header X-Frame-Options DENY; #禁止服務(wù)器自動解析資源類型 add_header X-Content-Type-Options nosniff; #防XSS攻擊 add_header X-Xss-Protection 1;
優(yōu)化后的綜合配置
worker_processes auto; http { #配置共享會話緩存大小,視站點訪問情況設(shè)定 ssl_session_cache shared:SSL:10m; #配置會話超時時間 ssl_session_timeout 10m; server { listen 443 ssl; server_name www.example.com; #設(shè)置長連接 keepalive_timeout 70; #HSTS策略 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; #證書文件 ssl_certificate www.example.com.crt; #私鑰文件 ssl_certificate_key www.example.com.key; #優(yōu)先采取服務(wù)器算法 ssl_prefer_server_ciphers on; #使用DH文件 ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #定義算法 ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"; #減少點擊劫持 add_header X-Frame-Options DENY; #禁止服務(wù)器自動解析資源類型 add_header X-Content-Type-Options nosniff; #防XSS攻擊 add_header X-Xss-Protection 1; #...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/40465.html
摘要:了解協(xié)議的主要目標是改進傳輸性能,實現(xiàn)低延遲和高吞吐量。從另一方面看,的高層協(xié)議語義并不會因為這次版本升級而受影響。所有首部值,以及它們的使用場景都不會變。不用為了利用的好處而修改標記。服務(wù)器必須運行協(xié)議,但大部分用戶都不會因此而受到影響。 了解http2協(xié)議 HTTP 2.0 的主要目標是改進傳輸性能,實現(xiàn)低延遲和高吞吐量。從另一方面看,HTTP 的高層協(xié)議語義并不會因為這次版本升...
摘要:日志主要分為兩種訪問日志和錯誤日志。請求過程中,的響應(yīng)時間。正確的關(guān)閉錯誤日志記錄功能的方法如下上面表示將存儲日志的路徑設(shè)置為垃圾桶。日志分割新版本支持自動切割并壓縮日志,日志文件名如下默認是每天都會產(chǎn)生一個文件。 Nginx日志主要分為兩種:訪問日志和錯誤日志。日志開關(guān)在Nginx配置文件(一般在server段來配置)中設(shè)置,兩種日志都可以選擇性關(guān)閉,默認都是打開的。 訪問日志acc...
閱讀 1572·2021-10-14 09:42
閱讀 3815·2021-09-07 09:59
閱讀 1292·2019-08-30 15:55
閱讀 572·2019-08-30 11:17
閱讀 3337·2019-08-29 16:06
閱讀 500·2019-08-29 14:06
閱讀 3123·2019-08-28 18:14
閱讀 3642·2019-08-26 13:55