Kann über IP auf Apache zugreifen, jedoch nicht über eine Domain mit SSL

0

Ich habe eine OwnCloud-Installation, ich möchte, dass nur https verfügbar ist und nicht http. Also habe ich Lets Encrypt installiert, was gut funktioniert. Ich habe bereits die Apache Conf auf die unten angehängte geändert. Ich habe eine Weiterleitung auf unserem Router für Port 443. Wenn ich zu https: // IP navigiere, funktioniert dies, aber ich erhalte eine SSL-Warnung, die normal ist, wenn die Domäne von der Servername-Konfiguration für Apache verschlüsselt wird. Wenn ich zu https://files.domain.org.uk gehe, erhalte ich eine 404.

Was könnte ich falsch machen?

<VirtualHost *:80>
    # The ServerName directive sets the request scheme, hostname and port that
    # the server uses to identify itself. This is used when creating
    # redirection URLs. In the context of virtual hosts, the ServerName
    # specifies what hostname must appear in the request's Host: header to
    # match this virtual host. For the default virtual host (this file) this
    # value is not decisive as it is used as a last resort host regardless.
    # However, you must set it for any further virtual host explicitly.
    ServerName files.domain.org.uk

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/owncloud

    # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
    # error, crit, alert, emerg.
    # It is also possible to configure the loglevel for particular
    # modules, e.g.
    #LogLevel info ssl:warn

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    # For most configuration files from conf-available/, which are
    # enabled or disabled at a global level, it is possible to
    # include a line for only one particular virtual host. For example the
    # following line enables the CGI configuration for this host only
    # after it has been globally disabled with "a2disconf".
    #Include conf-available/serve-cgi-bin.conf
RewriteEngine on
RewriteCond %{SERVER_NAME} =files.domain.org.uk
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
</VirtualHost>
Nathan
quelle
Was passiert, wenn Sie den VirtualHost-Direktiven-Port von 80 auf 443 (Dateianfang <VirtualHost *:80>auf <VirtualHost *:443>) ändern ? Im Wesentlichen haben Sie einen Standard-HTTP-Vhost deklariert, jedoch keinen für HTTPS. Apache weiß daher nicht, wo er nach HTTPS-Inhalten suchen soll.
Kinnectus
Aber wenn ich zu ExternalIP navigiere, wird die Seite auch mit Port 80 bedient
Nathan
Wie seltsam, es scheint jetzt zu funktionieren. Wenn du deinen Kommentar in eine Antwort eingibst, werde ich ihn als richtig markieren
Nathan

Antworten:

0

Da Ihre VirtualHost-Direktive für Apache nur eine Direktive für HTTP-Anforderungen (Port 80) enthält, wenn Sie eine HTTPS-Ressource (Port 443) anfordern, überprüft Apache die Direktiven und kann sie nicht abgleichen, da Sie keine für Port 443 deklariert haben .

Ändern <VirtualHost *:80>zu <VirtualHost *:443>werden Apache sagen , dass jeder Antrag auf Port 443 , die Servernamen übereinstimmt files.domain.org.uk sollte in Ihrer DocumentRoot sucht die Skripte Ihrer Website anzuzeigen.

Möglicherweise möchten Sie entweder die <VirtualHost *:80>Direktive beibehalten, wenn Sie zu http://files.domain.org.uk navigieren möchten, aber eine Zertifikatwarnung erhalten möchten , oder Ihre Weiterleitung von HTTP zu HTTPS beibehalten möchten ...

Kinnectus
quelle