Apache-2.2
為具有相同文件根的不同子域設置兩個 SSL
我有這個目錄:
/var/www/domain.com/web/domains/example.com /var/www/domain.com/web/domains/cdn.example.com /var/www/domain.com/web/domains/app.example.com
這意味著,我沒有指定每個網站的子域,但我只是在這個目錄中創建子域,我的 .htaccess 會處理這個問題。
現在我正在解決這個問題 - 我有域 app.example.com 的 SSL 證書,但我還需要為 cdn.example.com 設置 SSL,但我不知道如何設置它。我試圖為 cdn.example.com 生成 SSL 證書,但我無法為 cdn.example.com 設置它 -> 如果我嘗試這個:
echo | openssl s_client -connect cdn.example.com:443 2>/dev/null
我仍然看到,該證書主題是
app.example.com
而不是cdn.example.com
,所以我認為,它仍在嘗試為該域獲取錯誤的證書。SSL 的目錄是正確的。您在我的
example.com.vhost
文件中看到任何失敗嗎?<VirtualHost *:443> DocumentRoot /var/www/example.com/web ServerName app.example.com ServerAlias app.example.com <IfModule mod_ssl.c> SSLEngine on SSLProtocol All -SSLv2 -SSLv3 SSLCertificateFile /var/www/clients/client1/web17/ssl/example.com.crt SSLCertificateKeyFile /var/www/clients/client1/web17/ssl/example.com.key </IfModule> </VirtualHost> <VirtualHost *:443> DocumentRoot /var/www/example.com/web ServerName cdn.example.com ServerAlias cdn.example.com <IfModule mod_ssl.c> SSLEngine on SSLProtocol All -SSLv2 -SSLv3 SSLCertificateFile /var/www/clients/client1/web17/ssl/cdn/server.crt SSLCertificateKeyFile /var/www/clients/client1/web17/ssl/cdn/server.key </IfModule> </VirtualHost>
您正在測試沒有 servername 標識符的 SSL。要為每個 IP 擁有多個 SSL 證書,您的客戶端將需要使用SNI擴展。
因此,要使用 OpenSSL 進行測試,您需要設置
-servername
. 您的命令將是:echo | openssl s_client -servername cdn.website.com -connect cdn.website.com:443
在 Apache 2.2 下。您需要指令 NameVirtualHost 來指定共享相同 IP 的不同虛擬主機。
您複製粘貼的配置中似乎缺少的是:
NameVirtualHost *:443
只需定義一次,Apache 2.2 將根據請求的 Host 標頭知道每個請求應傳遞給哪個虛擬主機。