Apache-2.2

如何防止 https:// 在沒有證書的情況下從域訪問?

  • June 6, 2014

我有這個設置

Server version: Apache/2.2.22 (Ubuntu)
OpenSSL 1.0.1c 10 May 2012

一個連接多個域的 IP。因為example1.com我有一個簽名的 SSL 證書,因此example1.com可以通過https://secure.example1.com

這也適用於example2.com(使用有效證書籤名並通過 訪問https://secure.example2.com

但是,example3.com它沒有綁定任何 SSL 證書,並且不應通過https(SSL 埠 443)訪問。但是,**當使用者訪問時會https://example3.com顯示警告。**在 Chrome 中看起來像這樣

您嘗試訪問 example3.com,但實際上您訪問了一個標識為 secure.example1.com 的伺服器。這可能是由於伺服器上的錯誤配置或更嚴重的原因造成的。您網路上的攻擊者可能正試圖讓您訪問 example3.com 的假冒(且可能有害)版本

如果您忽略警告,使用者實際上會看到secure.example1.com

VirtualHost 設置如下所示

<VirtualHost *:443>
       ServerName secure.example1.com
       DocumentRoot /var/www/blahblah
       SSLEngine on
       SSLCertificateFile /blahblah.crt
       SSLCertificateKeyFile /blahblah.key
       SSLCertificateChainFile /blahblah.pem
</VirtualHost>

<VirtualHost *:443>
       ServerName secure.example2.com
       DocumentRoot /var/www/blahblah
       SSLEngine on
       SSLCertificateFile /blahblah.crt
       SSLCertificateKeyFile /blahblah.key
       SSLCertificateChainFile /blahblah.pem
</VirtualHost>

<VirtualHost *:80>
       ServerName example3.com
       DocumentRoot /var/www/blahblah
</VirtualHost>

我怎樣才能防止這種行為?

非 SSL 域不應使用此 IP。即使對於多個支持 SSL 的域,您也可以依靠客戶端毫無問題地實現 SNI,這可能是一個安全的假設,也可能不是一個安全的假設。

問題是,在 Apache 可以將瀏覽器重定向到 HTTP 之前,SSL 握手必須成功,因此如果您無法為域提供有效證書,客戶端將始終聲稱 SSL 錯誤。

編輯:如果您只使用一個具有適當 SAN 的證書(多域證書),則多個 SSL 域將毫無問題地工作。但是,非 SSL 域的問題仍然存在。

引用自:https://serverfault.com/questions/602339