2015-02-24 68 views
2

我有一個Apache的設備存在問題,將不匹配從客戶端訪問的服務器名稱,造成了警告:設置Apache的虛擬主機,表示正常SNI握手

TLSv1.2工作記錄層:警報(級別:警告,描述:無法識別的名稱)

我非常確定這與我的VirtualHost配置有關。儘管我已經爲所有主機設置了ServerName和ServerAlias,但服務器並沒有發回服務器名稱。

這裏是我的Apache配置:

<VirtualHost *:80> 
    ServerName example.io 
    ServerAlias example.io 
    Redirect permanent/https://example.io 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName api.example.io 
    ServerAlias api.example.io 
    Redirect permanent/https://api.example.io 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName store.example.io 
    ServerAlias store.example.io 
    Redirect permanent/https://store.example.io 
</VirtualHost> 

<VirtualHost *:443> 
    ServerName example.io 
    ServerAlias example.io 
    DocumentRoot /var/www/html 

    SSLEngine on 
    SSLCertificateFile /path/file.crt 
    SSLCertificateKeyFile /path/file.key 
    SSLCertificateChainFile /path/file.crt 

    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 

任何幫助,將不勝感激!

+0

「我的Apache機器出現問題,不會返回服務器名稱,這會導致某些實施SNI的客戶端返回錯誤。」 - 這對我來說沒有意義。客戶端發送它期望在ClientHello中的服務器名稱。服務器沒有返回服務器名稱。 – 2015-02-24 17:36:06

+0

你說得對,我誤解了這一點。客戶端發送它期望的服務器名稱,但它不匹配,Apache發回警告。我會更新我的問題。 – Stromgren 2015-02-24 17:37:53

+0

您只配置了一個證書。此證書已發送。如果證書的內容與期望的名稱不符,客戶會抱怨。對於SNI,您需要多個證書。或者您擁有多個名稱的證書,在這種情況下您甚至不需要SNI。 – 2015-02-24 17:39:34

回答

4

這不是SNI的問題,而是缺少鏈式證書的問題。從SSLLabs報告:

Chain issues Incomplete 
... 
2 Extra download RapidSSL SHA256 CA - G3 
Fingerprint: 0e34141846e7423d37f20dc0ab06c9bbd843dc24 

桌面瀏覽器都這些失蹤的證書鏈往往從其他網站緩存或下載。在這種情況下,其他應用程序或移動瀏覽器大都失敗。

除此之外,您還有其他設置問題,例如提供弱密碼(RC4)和協議(SSL3.0)。

TLSv1.2工作記錄層:警告(級別:警告,說明:無法識別的名稱)

這可能是因爲你有一個服務器名稱example.io但客戶端使用www.example.io這與您提供的ServerName不匹配。您不會在客戶端發生錯誤,因爲證書與客戶端使用的名稱相匹配。您應該使用

ServerAlias example.com *.example.com 

使此警告消失。

+0

非常感謝您的回答。 ServerAlias在警告方面做了工作。如果能夠解決連鎖問題。我不知道可以將多箇中間證書串聯在一起,這就造成了我的問題。 – Stromgren 2015-02-24 19:13:44