Wie wählt Apache aus, welches Zertifikat verwendet werden soll?

Wie wählt Apache aus, welches Zertifikat verwendet werden soll?

Derzeit hostet Apache mehrere Subdomänen mit Host-Zertifikaten, die mit Certbot und einer HTTP-Challenge generiert wurden.

Jetzt möchte ich einen virtuellen SSL-Standardhost einrichten, um nicht vorhandene Subdomains auf die Hauptdomain umzuleiten. Zu diesem Zweck werde ich ein Wildcard-Zertifikat mit DNS-Challenge generieren.

Da ich derzeit nicht in der Lage bin, die Erneuerung mit DNS-Challenge zu automatisieren, möchte ich das Platzhalterzertifikat nur für den Standard-SSL-Host in Apache verwenden.

Meine Frage ist: Wenn die erste Verhandlung zwischen Apache und dem Browser stattfindet, sucht Apache dann zuerst in der Konfiguration nach einem Zertifikat, das dem angeforderten Host entspricht, oder stellt Apache jedes Mal das im Standard-SSL-Host konfigurierte Platzhalterzertifikat bereit?

Antwort1

DerApache-Dokumentationenthält einen ausführlichen Abschnitt darüber, welcher VirtualHost für eine Anfrage ausgewählt wird. Ein Zitat aus dem Abschnitt „Wie der Server den richtigen namensbasierten virtuellen Host auswählt“:

Es ist wichtig zu erkennen, dass der erste Schritt bei der namenbasierten virtuellen Hostauflösung die IP-basierte Auflösung ist. Bei der namenbasierten virtuellen Hostauflösung wird nur der am besten geeignete namenbasierte virtuelle Host ausgewählt, nachdem die Kandidaten auf die beste IP-basierte Übereinstimmung eingegrenzt wurden. Die Verwendung eines Platzhalters (*) für die IP-Adresse in allen VirtualHost-Anweisungen macht diese IP-basierte Zuordnung irrelevant.

Wenn eine Anfrage eingeht, findet der Server das am besten (spezifischsten) passende <VirtualHost>-Argument basierend auf der von der Anfrage verwendeten IP-Adresse und dem Port.Wenn es mehr als einen virtuellen Host gibt, der diese am besten passende Adress- und Portkombination enthält, vergleicht Apache die Anweisungen ServerName und ServerAlias ​​außerdem mit dem in der Anforderung vorhandenen Servernamen.

Wenn Sie die ServerName-Direktive bei einem namenbasierten virtuellen Host weglassen, verwendet der Server standardmäßig einen vollqualifizierten Domänennamen (FQDN), der vom Systemhostnamen abgeleitet ist. Dieser implizit festgelegte Servername kann zu einer kontraintuitiven Zuordnung virtueller Hosts führen und wird nicht empfohlen.

Sie sollten einen dedizierten Standard-VirtualHost erstellen. Jede Anfrage an einen Host, der nicht explizit in einem anderen VirtualHost-Block aufgeführt ist, wird dorthin weitergeleitet, sodass Sie auswählen können, welches Zertifikat Sie dort verwenden möchten.

Antwort2

Apache ermöglicht Ihnen, die SSLCertificateFile-Direktive auf der Ebene des virtuellen Hosts anzugeben. SieheSSLZertifikatsdatei, die besagt: „Kontext: Serverkonfiguration, virtueller Host“. Unabhängig davon, welchen virtuellen Host es zur Beantwortung der Anfrage verwendet – sei es der standardmäßige virtuelle Host oder ein anderer – wird das Zertifikat verwendet, das Sie mit SSLCertificateFile in diesem virtuellen Host konfigurieren.

Ich hoffe, das beantwortet Ihre Frage?

verwandte Informationen