Po niedawnej aktualizacji Apache2 do wersji 2.2.31 znalazłem dziwne zachowanie w konfiguracji SSL VirtualHost.
Niektóre witryny, które hostuję, pokazywały certyfikat dla domyślnego hosta, nawet jeśli klient był tego Server Name Identification
świadomy, a stało się tak tylko z kilkoma z nich. Widoczne jest to jako powszechne ostrzeżenie paszportowe przeglądarki Firefox / Chrome o możliwym oszustwie podczas przeglądania bankowości domowej, ale po prostu tak nie było.
Żeby było jasne, jeśli serwer host.hostingdomain.org
ma własny protokół SSL, próbuje uzyskać dostęp do https://www.hostedsite.org
raportu o certyfikacie host.hostingdomain.org
, ale kilku https://www.hostedsite.me
zgłosiło poprawny certyfikat.
Wszystkie witryny są hostowane pod tym samym adresem IP na porcie 443. Prawda jest taka, że VirtualHosting działa po stronie HTTP i automatycznie przekierowuje klientów obsługujących SNI na SSL, więc jest wstecznie kompatybilny z klientami nieświadomymi SNI.
Podczas sprawdzania dzienników błędów dla szkodliwych hostów wirtualnych pokazano następujący tekst
[Tue Dec 25 16:02:45 2012] [error] Server should be SSL-aware but has no certificate configured [Hint: SSLCertificateFile] (/path/to/www.site.org.conf:20)
i faktycznie vhost został poprawnie skonfigurowany z SSLCertificateFile.
Pytanie jest oczywiste: jak to naprawić?
źródło
Miałem dokładnie ten sam problem, a to, co zadziałało, było niewiarygodnie proste
edytuj /etc/apache2/ports.conf (dla Ubuntu lub httpd.conf)
zmień „Listen 443” na „Listen 443 http” w sekcji ssl_module
źródło
Innym rozwiązaniem tego jest upewnienie się, że wszystkie: 443 vhosty zawierają konfigurację TLS.
Ten problem został niedawno wprowadzony w wheezy Debiana i mam rozwiązanie z http://blog.noizeramp.com/2010/10/03/apache-2-and-ssl-configuration/ .
źródło
httpd.conf
ale nie udało mi się dołączyć wierszy określających konfigurację TLS. Ponowne dodanie różnych ustawień TLS (SSLEngine, SSLCipherSuite, SSLCertificateFile i SSLCertificateKeyFile) rozwiązało problem.