„Serwer powinien obsługiwać protokół SSL, ale nie ma skonfigurowanego certyfikatu [Wskazówka: plik SSLCertificateFile]”

21

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.orgma własny protokół SSL, próbuje uzyskać dostęp do https://www.hostedsite.orgraportu o certyfikacie host.hostingdomain.org, ale kilku https://www.hostedsite.mezgł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ć?

usr-local-ΕΨΗΕΛΩΝ
źródło

Odpowiedzi:

38

Zdarza się, że może to być błąd w najnowszej wersji Apache.

Rozwiązanie 1: zmień wersję na najnowszą stabilną

Rozwiązanie 2: Edytuj listen.conf

Zastąpić Listen *:443(lub Listen 443w zależności od konfiguracji) zListen *:443 http

Kredyt

usr-local-ΕΨΗΕΛΩΝ
źródło
1
Dziękujemy za zwrócenie na to uwagi! Zaoszczędziłeś mi dużo zastanawiania się wokół ... Zastanawiam się, dlaczego apasz utrudnia życie !?
tftd
2
Rozwiązanie 2: czy powinno to być httpd.conf, a nie listen.conf
zzapper
1
Uwaga, to zdarzyło mi się dziś rano ... ostatecznie musiałem dodać ten „http” do linii nasłuchiwania w /etc/httpd/conf.d/ssl.conf - och, nie musiałem obniżać wersji…
Scott
Rozwiązania są alternatywne, nie trzeba obniżać wersji, jeśli dodajesz Listen.conf
usr-local-ΕΨΗΕΛΩΝ
10

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

Sprawiedliwość O.
źródło
To już jest w zaakceptowanej odpowiedzi.
Sven
2
Przyjęta odpowiedź wydaje się nieaktualna. Ta odpowiedź była bardziej przydatna i dokładna. +1
Parag
Ta odpowiedź dotyczy apache na moim stosie lamp apache2.4, ubuntu. Inną odpowiedzią jest „listen.conf” - powinien być ports.conf
Nick
2

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/ .

Francois Marier
źródło
To był mój problem. Zduplikowałem vhosta w moim, httpd.confale 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.
rinogo,