Dopo aver abilitato HTTPS sul mio server Apache2 - ottengo 404 errori su ogni richiesta [chiuso]


10

Okay, quindi non ho mai avuto esperienza con SSL / HTTPS, mi sono sempre occupato di HTTP standard. Di recente ho iniziato a lavorare su un sito che avrà bisogno di SSL. Quindi, ovviamente, sono uscito e ho cercato come iniziare. Sono arrivato alla fase di installazione del certificato SSL correttamente: viene visualizzato il lucchetto verde e il server risponde alle richieste HTTPS sulla porta 443. Il problema che ho è che, indipendentemente da ciò che faccio, non riesco a visualizzare alcuna pagina utilizzando HTTPS / SSL, tuttavia sono apparsi bene sulla porta 80 / HTTP (fino a quando non reindirizzerò HTTP su HTTPS).

In parole povere, posso accedere perfettamente al sito HTTPS, tuttavia le mie pagine non vengono inviate, ma viene inviato un 404 per ogni richiesta.


/etc/apache2/sites-available/[name].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>

Non sono sicuro se c'è qualcos'altro che potresti voler guardare, o altri dettagli, ma se ce ne fosse fatto sapere.

MODIFICARE:

Dopo aver cercato nei file di configurazione, ho stabilito che per qualsiasi motivo, durante la connessione a HTTPS, il server utilizza la radice del documento nella configurazione predefinita (/ var / www /), tuttavia questa configurazione predefinita non è abilitata con a2ensite. Non riesco a capire dove si trova la configurazione che sta causando questo


Le tue Rewritedirettive sembrano tentare di eseguire Apache dietro un proxy inverso mal configurato. Se il tuo Apache sta servendo il dominio direttamente senza alcun proxy, dovresti semplicemente abbandonare tutte le Rewritedirettive e sostituirle con una singola Redirect. E configura file di registro separati per ognuno in VirtualHostmodo tale da poter vedere esattamente quale VirtualHostprocesso di ogni richiesta.
Kasperd,

Per quanto riguarda i Rewrites, li stavo usando solo per ottenere un refirect temporaneo (non ero sicuro al 100% in quel momento), ora ho imparato che Redirect è perfettamente in grado di farlo (sì, male che non lo sapevo ). Per quanto riguarda i file di registro separati, da allora l'ho fatto. Ho anche capito quale fosse il problema e lo aggiornerò per riflettere ciò.
Michael Longhurst,

Risposte:


11

È assolutamente necessario reindirizzare tutte le richieste http su https? Perché sembra che sia quello che stai cercando di fare qui.

Ti suggerisco di iniziare rimuovendo le seguenti righe dal tuo conf:

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

Ho il sospetto che la sintassi possa essere sbagliata lì. Quindi prova a connetterti nuovamente su ciascun protocollo http: // e https: //.


Sono sicuro di voler reindirizzare tutto l'HTTP su HTTPS, poiché sto creando un pannello di amministrazione su questo dominio, quasi tutte le richieste contengono informazioni riservate. So che quella sintassi è corretta poiché il reindirizzamento funziona perfettamente. Ho pensato che il problema sia che il server sta cercando i file in / var / www / html invece del documentroot che ho specificato
Michael Longhurst,

Il percorso del documento funziona senza il reindirizzamento? Vale la pena provare imo ...
Ivan

Sto provando prima l'altra risposta, la proverò fa se questo fallisce
Michael Longhurst il

Ci ho provato anche io, ma senza successo
Michael Longhurst il

Bene, prova a sostituire l'asterisco da *: 443 con l'IP effettivo del server, lo stesso vale per la porta 80. Controlla anche che la sintassi del percorso radice del documento dovrebbe iniziare con /
Ivan il

11

Non ricordo esattamente come l'ho capito, ma mi sono imbattuto in qualcosa da qualche parte che mi ha suggerito di mettere:

<VirtualHost _default_:443>

Invece di:

<VirtualHost *:443>

Da quando lo ho sostituito, il mio SSL ha funzionato perfettamente.


10

Prova a modificare il tuo file per assomigliare a questo:

Questa è una configurazione di base, se funziona aggiungi i tuoi reindirizzamenti se sono ancora necessari.

Se questo non funziona, mostra il tuo 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>

No, continua a non funzionare, mostra ancora il index.html temporaneo che ho inserito in / var / www / html. Collegherò un pastebin con il conf
Michael Longhurst il

Questo è il pastebin: pastebin.com/iwubgFye
Michael Longhurst,

Solo per confermare che stai riavviando apache dopo aver apportato le modifiche?
Anthony Fornito,

Sì, tutto e tutto ciò che cambio sto ricominciando
Michael Longhurst il

Ho aperto tutti i file di configurazione che posso immaginare ed eseguo un CTRL + F per trovare ovunque DocumentRoot sia impostato su "/ var / www / html" e non abbia trovato nulla. Quindi non posso per la vita di me capire perché Apache sta leggendo da / var / www / html se non gli viene detto
Michael Longhurst il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.