2011-12-05 51 views
1

我正在運行一個多語言網絡商店,可以從不同的域訪問,導致不同的語言。Apache:有條件的SSLCertificateFile取決於域?

apache的配置非常複雜,我希望有一個文件與所有商店共享。直到我必須引入SSL之前,我已經完成了這個任務。 當涉及到Apache和SSL證書,我需要做的是這樣的:

SetEnv is_es 0<br> 
SetEnvIfNoCase Host .*es is_es 1<br> 
SSLCertificateFile /etc/ssl/certs/spanish.server.crt env=is_es<br> 

這aparently不可能的,阿帕奇告訴我:

<i>SSLCertificateFile takes one argument, SSL Server Certificate file (`/path/to/file' - PEM or DER encoded)</i> 

我想知道是否有任何解決方法。我的目標是避免擁有相同配置的不同副本,並且必須手動傳播我想要做的任何更改。 它託管在專用服務器上,所以我可以自由地對設置進行任何更改。

+0

據我所知,當您使用的服務器名稱指示(SNI),你幾乎肯定會在這裏需要的配置是每個虛擬主機進行使用其服務器名調度。 – Bruno

回答

1

當您處於https連接時,Host標頭位於SSL封裝內,因此在檢查虛擬主機的主機名之前,您需要完整的SSL握手。

你應該去找與SAN (Subject Alternative Names)的SSL證書,這將允許一個證書爲多個主機名。 (或通配符證書)

所有的主流瀏覽器支持它已經:

而且你可以從專業的CA這個證書之一:

+0

感謝馬塞洛。答案完全合理,並且有很好的解決方法。獎勵! –

+1

@jeanlucorsai,我假設您已經擁有(需要)多個證書,在這種情況下,您還需要SNI(或多個IP地址),但多個SAN應該可以在單個證書中工作。 – Bruno