text: 伺服器名稱指示，而不需要所有這些站點使用相同的證書。它與HTTP/1.1基於名稱的虛擬主機的概念相同，但是用於HTTPS。為了使SNI協議起作用，絕大多數訪問者必須使用實現它的Web瀏覽器。使用未實現SNI瀏覽器的使用者將被提供預設證書，因此很可能會收到證書警告。問題的背景.當進行TLS連線時，客戶端從Web伺服器請求數字證書。伺服器一旦傳送證書，客戶端就會檢查這個證書，並將其嘗試連線的名稱與證書中包含的名稱進行對比。如果發生匹配，則連線正常進行。如果沒有找到匹配，則可能會向用戶警告該差異，並且可能會中止連線，因為該失配可能表明存在中間人攻擊。不過，某些應用程式允許使用者繞過警告繼續進行連線，由使用者承擔信任證書以及連線的責任。一個證書覆蓋多個主機名是可以做到的。X.509 v3規範引入了codice_1欄位，該欄位允許一個證書指定多個域名，並在通用名和"subjectAltName"欄位中使用萬用字元。然而，由於缺少所有名稱的完整列表，可能很難甚至不可能獲得涵蓋伺服器將負責的所有名稱的單個證書。負責多個主機名的伺服器可能需要為每個名稱提供不同的證書。自2005年以來，CAcert已經在虛擬伺服器上運行了TLS的不同用法的實驗。大多數實驗是不理想和不切實際的。例如，可以使用"subjectAltName"來包含單個證書中由一個人控制的多個域名。每當域名列表更改時，必須重新發布此類“統一通訊證書”。基於名稱的虛擬主機允許多個DNS主機名由同一IP地址上的單個伺服器。但是，當使用HTTPS時，TLS握手發生在伺服器看到任何HTTP頭之前。因此，伺服器不可能使用HTTP主機頭中的資訊來決定呈現哪個證書，並且因此只有由同一證書覆蓋的名稱才能由同一IP地址提供。實際上，這意味著對於安全瀏覽來說，HTTPS伺服器只能是每個IP地址服務一個域名。為每個站點分配單獨的IP地址會增加託管成本，因為對IP地址的請求必須為區域網際網路註冊機構提供證據而且現在IPv4地址已用盡。其結果是，許多網站在IPv4上使用安全通訊實際上都受到了限制。IPv6地址空間未用完，因此使用IPv6提供的網站不受此問題的影響。SNI如何解決此問題.客戶端在SNI擴充套件中傳送要連線的主機名稱，作為TLS協商的一部分。這使伺服器能夠提前選擇正確的主機名稱，並向瀏覽器提供相應TLS證書。從而，具有單個IP地址的伺服器可以在獲取公共證書不現實的情況下提供一組域名的TLS連線。SNI在2003年6月的RFC 3546，《傳輸層安全擴充套件》中加入到IETF的Internet RFCs中。最新版本的標準是RFC 6066。實現.在2004年，EdelKey專案做了一個用於將TLS/SNI新增到OpenSSL中的補丁。在2006年，這個補丁被移植到OpenSSL的開發分支，並在2007年由OpenSSL 0.9.8支援。一個應用程式要實現SNI，它使用的TLS庫必須實現SNI，並且該應用程式必須將主機名傳遞給TLS庫。其他複雜的問題有，TLS庫可以包括在應用程式中或者作為底層作業系統的元件。因此，一些瀏覽器在任何作業系統上執行時都能實現SNI，而其他瀏覽器僅在某些作業系統上執行時才能實現SNI。安全性.Cloudflare的聯合創始人兼執行長Matthew Prince曾表示，傳統SNI“絕對是加密裝甲中的最後縫隙之一”。由於SNI資訊並未加密，審查者可以識別出使用者訪問的網站域名。現已被部分國家用於網際網路審查，如防火長城和韓國的KCSC。有兩種方法可以解決這個問題。域前置.域前置透過SNI中使用虛假無害的域名資訊，已經被TLS加密的應用層才使用真實的域名資訊，將真實流量隱藏在看似無害的流量中，從而使審查者無法區別出來，對於基於CDN的域前置，審查者要麼一律放行，要麼帶有嚴重附加傷害的一刀切封鎖。Cloudflare在2016年的一些修改讓基於其CDN的域前置不再工作。Google和CloudFront曾經接受域前置，之後停止了，被認為是受到俄羅斯政府的壓力，防止Telegram利用該技術來規避審查。加密伺服器名稱指示.作為TLS的標準擴充套件實現，TLS 1.3一開始準備透過支援加密SNI以解決這個問題。Cloudflare、Mozilla、Fastly和蘋果的開發者制定了關於加密伺服器名稱指示的草案。2018年9月24日，Cloudflare在其網路上支援並預設啟用了ESNI。2019年7月，Mozilla Firefox開始提供ESNI的草案性實現支援，但預設關閉。2019年8月，研究人員確認ESNI可以有效規避防火長城的SNI審查。2020年3月，ESNI更名為Encrypted Client Hello，從而容易被網際網路服務提供商或審查系統識別的問題。自2020年7月下旬起，防火長城開始封鎖加密伺服器名稱指示的TLS通訊。
metadata.dataset: erhwenkuo/wikipedia-zhtw
metadata.title: 伺服器名稱指示
metadata.url: https://zh.wikipedia.org/wiki?curid=4771082