Binden Sie den Apache-SSL-Port an einen anderen Port mit demselben OpenSL-Port 443

8

Ich habe einen Server (Linux Base), auf dem ich dotcms installiert habe. Er läuft auf Port 80 und openssl befindet sich auf Port 443. Beide werden im laufenden Prozess gestartet. Kürzlich habe ich Apache auf meinem Server installiert. und als ich Apache startete, blieb es hängen, weil der Standard-SSL-Port auf Apache 443 und Apache 80 ist, beide laufen bereits. Nur für meine Aufgabe habe ich nur Apache ohne SSL auf Port 90 gestartet. Aber ich möchte SSL mit Apache starten, natürlich auch auf einem anderen Port. Ist es möglich, Apache SSL mit demselben OpenSL zu binden?

Ich benötige meine Standard-Dotcms im laufenden Prozess. Ich kann sie auf keinen Fall stoppen. Ich kann meinen Dotcms-Dienst nur neu starten, wenn ein Apache-Start erforderlich ist. aber ich brauche dotcms und apache, um beide parallel zu laufen.

siehe Bild auf diesem Link (wegen des geringeren Rufs konnte ich kein Bild hochladen) http://developers89.byethost14.com/images/ssl.png

Waqas Ahmed
quelle
1
Geben Sie Informationen als Text und nicht als Bilder an (lesbar, durchsuchbar usw.).
Karl Richter

Antworten:

17

Ja, es ist möglich, Apache an einen anderen Port zu binden und trotzdem SSL zu verwenden.

Ersetzen Sie die ListenAnweisungen in Ihrer Apache-Konfiguration. Die Konfiguration sollte zeilenartig enthalten

Listen 80
Listen 443

Apache überwacht die mit diesen Konfigurationsoptionen definierten Ports. Ersetzen Sie sie, und Apache überwacht einen anderen Port.

Sie müssen Apache jedoch weiterhin mitteilen, was an den oben genannten Ports bereitgestellt werden soll. Angenommen, Sie möchten, dass Apache Port 8080 (normal) und 4433 (ssl) überwacht. Dann müssen Sie die Listen-Anweisungen ersetzen

Listen 8080
Listen 4433

Definieren Sie anschließend zwei VirtualHosts an diesen Ports wie folgt:

NameVirtualHost 0.0.0.0:8080
NameVirtualHost 0.0.0.0:4433

<VirtualHost 0.0.0.0:8080>
    ServerName the.server.name
    ServerAlias *
    DocumentRoot /var/www/plain
</VirtualHost>

<VirtualHost 0.0.0.0:4433>
    ServerName the.server.name
    ServerAlias *
    DocumentRoot /var/www/ssl

    SSLEngine On
    SSLCertificateFile /the/certificate/file
    SSLCertificateKeyFile /the/key/file
</VirtualHost>

Wenn Sie keine VirtualHost-Definition mehr haben, müssen Sie die ServerAliasDirektive (oder die ServerName) nicht einschließen .

Wenn Sie Apache neu starten, wartet es auf 8080 auf unverschlüsselte Verbindungen und auf Port 4433 auf SSL. Stellen Sie sicher, dass Sie keine alte VirtualHost-Definition haben, die die falsche Portnummer enthält.

Lacek
quelle
Danke, Port ist eingeschaltet, aber wenn ich mydomain.com:4433 versuche, gibt es den Fehler "SSL-Verbindungsfehler"Unable to make a secure connection to the server. This may be a problem with the server, or it may be requiring a client authentication certificate that you don't have.
Waqas Ahmed
wenn ich versuche, ssl-Modul mit diesem Befehl unter Linux a2enmod ssl zu aktivieren. es gibt Fehler: * Restarting web server apache2 ... waiting (98)Address already in use: make_sock: could not bind to address [::]:4433und wenn ich dieses Modul deaktiviere und neu starte, läuft der Apache 4433-Port und es tritt ein Fehler auf, der im obigen Kommentar hervorgehoben wird
Waqas Ahmed
Stoppen Sie den Apache-Webserver und stellen Sie sicher, dass keine Apache-Instanzen mehr ausgeführt werden. Überprüfen Sie mit dem Befehl "netstat -napt | grep 4433", ob die Ports geöffnet sind (es sollte keine Ausgabe erfolgen). Führen Sie dann a2enmod aus, um das SSL-Modul zu aktivieren. Stellen Sie außerdem sicher, dass die Anweisungen "Listen" nur einmal in den Konfigurationsdateien angezeigt werden (z. B. führt die zweite Anweisung "Listen 4433" zu einem Fehler).
Lacek
Mit Apache 2.4.10 erhalte ichInvalid ServerName "*" use ServerAlias to set multiple server names.
Ortomala Lokni
Ich habe die Antwort aktualisiert, sodass die Konfiguration auch mit Apache 2.4 funktioniert. Vielen Dank für den Hinweis.
Lacek