Nach dem Aktivieren von HTTPS auf meinem Apache2-Server werden bei jeder Anforderung 404 Fehler angezeigt [geschlossen]

10

Okay, ich habe noch nie Erfahrung mit SSL / HTTPS gehabt, ich habe mich immer nur mit Standard-HTTP befasst. Vor kurzem habe ich begonnen, an einer Site zu arbeiten, die SSL benötigt. Also bin ich natürlich ausgegangen und habe nachgeforscht, wie es geht, und habe angefangen. Ich habe das Stadium der erfolgreichen Installation des SSL-Zertifikats erreicht - das grüne Vorhängeschloss wird angezeigt und der Server antwortet auf HTTPS-Anforderungen an Port 443. Das Problem ist, dass ich mit HTTPS / keine Seiten anzeigen kann, egal was ich tue. SSL, jedoch schienen sie auf Port 80 / HTTP in Ordnung zu sein (bis ich HTTP zu HTTPS umleitete).

Einfach gesagt, ich kann absolut in Ordnung auf die HTTPS-Site zugreifen, aber meine Seiten werden nicht gesendet, sondern für jede Anfrage wird ein 404 gesendet.


/etc/apache2/sites-available/[name weibl.conf

<VirtualHost *:80>
    ServerName [serverName]

    RewriteEngine On

    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]
</VirtualHost>

<VirtualHost *:443>
    ServerName [serverName]
    ServerAdmin [email]
    DocumentRoot [docRoot]

    # I know the following SSL cert stuff is correct

    SSLEngine On
    SSLCertificateFile [...]/[domain].crt
    SSLCertificateKeyFile [...]/[certificate].key
    SSLCertificateChainFile [...]/[theotherone].crt

    ErrorLog ${APACHE_LOG_DIR}/[custom]_error.log
        CustomLog ${APACHE_LOG_DIR}/[custom]_access.log combined

        <Directory "[docRoot]">

                Options Indexes FollowSymLinks MultiViews

        AllowOverride All
        Order allow,deny
        allow from all

        </Directory>

</VirtualHost>

Ich bin mir nicht sicher, ob es noch etwas gibt, das Sie sich ansehen möchten, oder andere Details, aber wenn es welche gibt, lassen Sie es mich wissen.

BEARBEITEN:

Nach einigem Suchen in den Konfigurationsdateien habe ich festgestellt, dass der Server beim Herstellen einer Verbindung zu HTTPS aus irgendeinem Grund das Dokumentstammverzeichnis in der Standardkonfiguration (/ var / www /) verwendet. Diese Standardkonfiguration ist jedoch mit a2ensite nicht aktiviert. Ich kann anscheinend nicht herausfinden, wo sich die Konfiguration befindet, die dies verursacht

Michael Longhurst
quelle
Ihre RewriteAnweisungen sehen so aus, als würden Sie versuchen, Apache hinter einem schlecht konfigurierten Reverse-Proxy auszuführen. Wenn Ihr Apache die Domain direkt ohne Proxy bereitstellt, sollten Sie einfach alle RewriteAnweisungen löschen und durch eine einzige ersetzen Redirect. Konfigurieren Sie für jede Datei separate Protokolldateien, VirtualHostsodass Sie genau sehen können, welcher VirtualHostProzess jede Anforderung verarbeitet.
Kasperd
Was die Rewrites betrifft, habe ich sie nur verwendet, um eine vorübergehende Weiterleitung zu erhalten (ich war mir zu diesem Zeitpunkt nicht 100% sicher). Ich habe jetzt erfahren, dass Redirect dazu in der Lage ist (ja, schade, dass ich das nicht wusste ). In Bezug auf die separaten Protokolldateien habe ich das seitdem getan. Ich habe auch herausgefunden, was das Problem war und werde es aktualisieren, um dies widerzuspiegeln.
Michael Longhurst

Antworten:

11

Ist es unbedingt erforderlich, alle http-Anfragen an https umzuleiten? Denn es scheint, dass Sie das hier versuchen.

Ich schlage vor, Sie entfernen zunächst die folgenden Zeilen aus Ihrer conf:

RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=302]

Ich vermute, dass die Syntax dort falsch ist. Versuchen Sie dann erneut, eine Verbindung zu jedem http: // und https: // Protokoll herzustellen.

Ivan
quelle
Ich bin sicher, dass alle HTTP-Dateien zu HTTPS umgeleitet werden sollen. Da ich in dieser Domäne ein Admin-Panel erstelle, enthalten fast alle Anfragen vertrauliche Informationen. Ich weiß, dass diese Syntax korrekt ist, da die Umleitung perfekt funktioniert. Ich habe herausgefunden, dass das Problem darin besteht, dass der Server nach Dateien in / var / www / html anstelle der von mir angegebenen Dokumentenwurzel sucht
Michael Longhurst
Funktioniert der Dokumentpfad ohne die Umleitung? Einen Versuch wert imo ...
Ivan
Ich versuche die andere Antwort zuerst, werde es vor geben, wenn das fehlschlägt
Michael Longhurst
Hat das auch versucht, aber ohne Erfolg
Michael Longhurst
In Ordnung, versuchen Sie, das Sternchen von *: 443 durch die tatsächliche IP des Servers zu ersetzen. Dies gilt auch für Port 80. Überprüfen Sie auch, ob die Syntax des Dokumentstammpfads mit /
Ivan
11

Ich kann mich nicht genau erinnern, wie ich es herausgefunden habe, aber ich bin irgendwo auf etwas gestoßen, das vorgeschlagen hat:

<VirtualHost _default_:443>

Anstatt von:

<VirtualHost *:443>

Seitdem ich das ersetzt habe, funktioniert mein SSL einwandfrei.

Michael Longhurst
quelle
10

Versuchen Sie, Ihre Datei so zu bearbeiten, dass sie ungefähr so ​​aussieht:

Dies ist eine sehr grundlegende Konfiguration. Wenn dies funktioniert, fügen Sie Ihre Weiterleitungen hinzu, falls dies noch erforderlich ist.

Wenn dies nicht funktioniert, zeigen Sie bitte Ihre ssl.conf

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>
         <Directory "[docRoot]">
        AllowOverride All
        </Directory>
        DocumentRoot [docRoot]
        ServerName [serverName]
</VirtualHost>

<VirtualHost *:443>
        SSLEngine on
       SSLCertificateFile [...]/[domain].crt
       SSLCertificateKeyFile [...]/[certificate].key
       SSLCertificateChainFile [...]/[theotherone].crt
         <Directory "[docRoot]">
        AllowOverride All
        </Directory>
        DocumentRoot [docRoot]
        ServerName [serverName]
</VirtualHost>
Anthony Fornito
quelle
Nein, funktioniert immer noch nicht, es zeigt immer noch die temporäre index.html an, die ich in / var / www / html abgelegt habe. Ich werde einen Pastebin mit dem Conf
Michael Longhurst
Dies ist der Pastebin: pastebin.com/iwubgFye
Michael Longhurst
Nur um zu bestätigen, dass Sie Apache nach Änderungen neu starten?
Anthony Fornito
Ja, alles und jedes, was ich ändere, starte ich neu
Michael Longhurst
Ich habe jede erdenkliche Konfigurationsdatei geöffnet und STRG + F ausgeführt, um festzustellen, wo DocumentRoot auf "/ var / www / html" eingestellt ist und nichts gefunden hat. Ich kann mir also für mein ganzes Leben nicht vorstellen, warum Apache aus / var / www / html liest, wenn es nicht gesagt wird
Michael Longhurst