引入第二個 SSL 證書時,其他站點在多站點 Apache 伺服器上提供服務
我有一個在 Ubuntu 伺服器上執行的 Apache 服務,它有兩個完全不同的網站,即不同的域。
它們每個都有一個單獨的 VirtualHost 配置,直到最近,它們中只有一個通過 HTTPS 提供服務。
今天早上,當我為第二個站點引入了一個新的 SSL 證書並相應地更改了 VirtualHost 配置(改為偵聽埠 443,將其指向證書文件等),而不是像預期的那樣為第二個站點提供服務,它為原始 HTTPS 提供服務代替網站。
如果有人可以幫助我,我將不勝感激。
這是(經過清理的)VirtualHost 文件:
第一個站點 - 繼續執行壓倒一切的站點
<VirtualHost *:443> ServerAdmin webmaster@localhost ServerName www.first-site.com ServerAlias some similar names DocumentRoot /var/www/first-site.com/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined #SSL config SSLEngine on SSLProtocol -All +TLSv1.2 SSLCertificateFile /etc/apache2/ssl/first-site/firstsite-certificate.crt SSLCertificateKeyFile /etc/apache2/ssl/first-site/firstsite.key SSLCertificateChainFile /etc/apache2/ssl/first-site/firstsitechain.crt .....More site-specific rules.....
第二個站點 - 不斷被覆蓋的站點
<VirtualHost *:443> ServerAdmin webmaster@localhost ServerName second-site.com ServerAlias some similar names DocumentRoot /var/www/secondsite/htdocs ErrorLog /var/log/apache2/secondsite-error.log CustomLog /var/log/apache2/secondsite-access.log combined SSLEngine on SSLProtocol -All +TLSv1.2 SSLCertificateFile /etc/apache2/ssl/secondsite/secondsite.crt SSLCertificateKeyFile /etc/apache2/ssl/secondsite/secondsite.key SSLCertificateChainFile /etc/apache2/ssl/secondsite/secondsitechain.crt .....More site-specific rules.....
我查看了日誌,但這並沒有彈出。也許這只是我的grep-fu…
有人經歷過類似的事情嗎?需要更多資訊?
關鍵字:SNI(伺服器名稱指示)
看起來您的伺服器或客戶端缺少 SNI 支持,請參閱
https://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI
要測試您的伺服器是否正在返回 SNI 標頭資訊,您可以嘗試
openssl s_client -servername www.SERVERNAME.com -tlsextdebug -connect www.YOURSERVER.com:443 2>/dev/null | grep "server name"
見https://serverfault.com/questions/506177/how-can-i-detect-if-a-server-is-using-sni-for-https
您也可以嘗試這樣的 SSL 伺服器測試https://www.ssllabs.com/ssltest/ “握手模擬”應該給你這樣的老客戶:
Android 2.3.7 No SNI 證書不正確,因為此客戶端不支持 SNI
但為較新的客戶提供匹配的證書。
順便說一句,這裡有人遇到了類似的問題 https://serverfault.com/questions/510132/apache-sni-namevhosts-always-route-to-first-virtualhost-entry