373
人物
高防/WAF中SNI引發的https訪問異常問題__運維問題_產品常見問題_DDoS 高防IP-阿裏雲
什麼是SNI
, 隨著,IPv4,地址的短缺,為了讓多個域名複用一個,IP,地址,我們在,HTTP,服務器上引入了虛擬主機的概念,服務器可以根據客戶端請求中不同的,host,來將請求交給不同的域名(虛擬主機)來處理。
,但在一個被多個域名(虛擬主機)共享,IP,的,HTTPS,服務器中,由於在握手建立之前服務器看不到客戶端請求的是哪個,host,,所以無法將請求交給特定的虛擬主機;而要完成握手,又必須讀取虛擬主機配置中的證書信息。SNI(,Server Name Indication,)就是用來解決這個看似矛盾的問題,它要求客戶端在與服務器握手時就攜帶要訪問域名的,host,信息,這樣服務器就知道用哪個虛擬主機的證書去跟客戶端握手並建立,TSL,連接了。
,SNI,最早在,2004年就提出了,目前主流的新版瀏覽器、服務器和測試工具都已支持,詳情請參考最後一部分。
為什麼高防/WAF中必須要求客戶端支持SNI
,高防,/WAF,在反向代理,HTTPS,業務時,需要代理客戶端去跟真實服務器(,RS,)交互,所以需要在配置,HTTPS,防護時上傳證書和私鑰。真實的高防和,WAF服務器,數量是有限的,對於用戶上萬的域名顯然不可能滿足一個域名一台物理服務器,,所以整個高防,/WAF,集群必然要多個域名複用相同的服務器,,這樣就要求客戶端必須支持,SNI,,才能正常與高防,/WAF,交互。
,當使用不支持,SNI,的瀏覽器訪問高防,/WAF,防護的網站時,高防,/WAF,因不知道客戶端請求的是哪個域名,無法調取對應的虛擬主機證書來跟客戶端交互,隻能使用內置的一個缺省證書去跟客戶端握手,這時在客戶端瀏覽器上會提示,“,服務器證書不可信,”,,如下圖:
,
注意:即便RS隻有一個域名(即沒有複用IP),可以不需要支持SNI,但因為高防/WAF在中間反向代理,而客戶端必須先與高防/WAF建立連接,所以還是需要客戶端支持SNI的。
Nginx/Apache的服務器端SNI實現
, 如需要配置服務器支持,SNI,,可參考這兩篇文章:
,Nginx,:,https://www.ttlsa.com/web/multiple-https-host-nginx-with-a-ip-configuration/
,Apache,:,https://www.ttlsa.com/apache/multi-https-virtual-host-apache-mod_gnutls/
客戶端不支持SNI如何解決
, SNI,是一個很便利的擴展,隨著,IPv4,地址的耗盡,全麵支持,SNI,是趨勢。對於不支持,SNI,的客戶端,我們有兩個解決方案:
,1., ,建議用戶升級或使用新版本的瀏覽器,如,Chrome,、,Firefox,等(強烈推薦)
,2., ,在高防,不配置七層網站防護,隻采用四層,443,端口轉發(風險:無法防護,CC,攻擊)
常見的SNI支持情況
注意: SNI兼容TLS1.0及以上的協議,但不被SSL支持。
,
,桌麵版瀏覽器支持
- ,Chrome 5,及以上版本
- ,Chrome 6,及以上版本(,Windows XP,)
- ,Firefox 2,及以上版本
- ,IE 7,及以上版本(運行在,Windows Vista/Server 2008,及以上版本版本係統中,,在,XP,係統中任何版本的,IE,瀏覽器都不支持,SNI,)
- ,Konqueror 4.7 ,及以上版本
- ,Opera 8 ,及以上版本
- ,Safari 3.0 on Windows Vista/Server 2008 ,及以上版本,, or Mac OS X 10.5.6 ,及以上版本
, ,手機端瀏覽器支持
- ,Android Browser on 3.0 Honeycomb ,及以上版本
- ,iOS Safari on iOS 4 ,及以上版本
- ,Windows Phone 7 ,及以上版本
, ,服務器支持
- , Apache 2.2.12 ,及以上版本
- ,Apache Traffic Server 3.2.0 ,及以上版本
- ,Cherokee
- ,HAProxy 1.5 ,及以上版本
- ,IIS 8.0 ,及以上版本
- ,lighttpd 1.4.24 ,及以上版本
- ,LiteSpeed 4.1 ,及以上版本
- ,nginx 0.5.32 ,及以上版本
, ,命令行支持
- ,cURL 7.18.1 ,及以上版本
- ,wget 1.14 ,及以上版本
, ,庫支持
- , GNU TLS
- ,JSSE (Oracle Java) 7 ,及以上版本,, ,僅作為客戶端
- ,libcurl 7.18.1 ,及以上版本
- ,NSS 3.1.1 ,及以上版本
- ,OpenSSL 0.9.8j ,及以上版本
- ,OpenSSL 0.9.8f ,及以上版本,需配置,flag
- ,Qt 4.8 ,及以上版本
最後更新:2016-07-12 13:53:02
上一篇:
新購買ECS或重置ECS後安全部署方法__技術分享_技術運維問題_漏洞掃描-阿裏雲
下一篇:
防禦WordPress反射_阿裏雲幫助中心-阿裏雲,領先的雲計算服務提供商
雲服務器 ECS使用須知
SetVServerGroupAttribute__VServerGroup相關API_API 參考_負載均衡-阿裏雲
API說明__產品簡介_推薦引擎-阿裏雲
製作報表-儀表板__製作報表_Quick BI-阿裏雲
生命周期管理__Java-SDK_SDK 參考_對象存儲 OSS-阿裏雲
在哪裏可以查到OSS的權限定義___對象存儲(OSS)授權問題_授權常見問題_訪問控製-阿裏雲
錯誤碼表__錯誤說明_API 網關-阿裏雲
Encrypt__API 參考_密鑰管理服務-阿裏雲
子賬號訪問__授權管理_阿裏雲物聯網套件-阿裏雲
分享文件__快速入門_對象存儲 OSS-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲