Https erzwingen

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
weshalb
Beiträge: 1265
Registriert: 16.05.2012 14:19:49

Https erzwingen

Beitrag von weshalb » 12.12.2016 15:54:53

Hallo, hat jemand einen Tip, wie ich Https für eine Seite auf meinem Webserver intern und extern erzwingen kann? Von extern her benutze ich einen DynDNS-Anbieter, so dass ich meinem internen Servernamen nur ein .xx.de anhängen muss.

Mit Redirect in der /etc/apache2/sites-enabled/000-default.conf klappt das immer nur für eine URL oder gibt es noch andere Möglichkeiten?

Mein Dank gilt schon mal einigen Hinweisen.

Benutzeravatar
heisenberg
Beiträge: 3556
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Https erzwingen

Beitrag von heisenberg » 12.12.2016 16:00:43

Das dürfte helfen:

https://de.wikipedia.org/wiki/HTTP_Stri ... t_Security

Ansonsten kannst Du doch auch einfach eine Datei einbinden mit dem Inhalt If not https -> redirect to https://%{hostname}. Das dürfte auch als Wildcard funktionieren.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: Https erzwingen

Beitrag von uname » 12.12.2016 16:10:29

Folgende Lösung für die Apache2-Konfiguration:

Code: Alles auswählen

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
oder für .htaccess:

Code: Alles auswählen

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{ENV:HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Leider weiß ich nicht ob es bei verschiedenen Namen (intern, extern) funktioniert. Evtl. einfach zwei virtuelle Webserver laufen lassen. Natürlich kannst du auch HTTP deaktivieren, nur dann muss man immer https:// eingeben. Ich finde eine automatische Umleitung von HTTP auf HTTPS einfach schöner.

Benutzeravatar
heisenberg
Beiträge: 3556
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Https erzwingen

Beitrag von heisenberg » 12.12.2016 16:27:19

Es ist halt die Frage ob man das Ziel variabel haben will oder eher fest konfiguriert. Wenn es variable ist, braucht man natürlich auch für jeden HTTPS-Zielhost ein Zertifikat oder der Browser meckert eben an, dass die Verbindung nicht sicher ist.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: Https erzwingen

Beitrag von uname » 12.12.2016 16:29:35

... braucht man natürlich auch für jeden HTTPS-Zielhost ein Zertifikat oder der Browser meckert eben an, dass die Verbindung nicht sicher ist.
Man kann ruhig ein gemeinsames Zertifikat verwenden. Intern kann man z.B. die Fehlermeldung ignorieren und den Fingerprint kann man sowieso auch manuell prüfen. Sicher ist die Verbindung trotzdem auch wenn der Browser was anderes behauptet.

Benutzeravatar
heisenberg
Beiträge: 3556
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Https erzwingen

Beitrag von heisenberg » 12.12.2016 16:35:40

So erzieht man sich Leute, die Fehlermeldungen ignorieren.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

DeletedUserReAsG

Re: Https erzwingen

Beitrag von DeletedUserReAsG » 12.12.2016 19:20:05

Es ist nur ’ne Warnung, und man kann das Zertifikat manuell prüfen, bestätigen, speichern. Dann gibt’s erst genau dann wieder eine Warnung, wenn sich das Cert geändert hat. Zumindest ich sehe das Problem damit nicht; noch weniger sehe ich den Sinn darin, für interne Sachen ein weiteres Cert zu holen und das Ganze extra zu konfigurieren

Benutzeravatar
weshalb
Beiträge: 1265
Registriert: 16.05.2012 14:19:49

Re: Https erzwingen

Beitrag von weshalb » 13.12.2016 15:55:57

uname hat geschrieben:Folgende Lösung für die Apache2-Konfiguration:

Code: Alles auswählen

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
oder für .htaccess:

Code: Alles auswählen

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{ENV:HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
Leider weiß ich nicht ob es bei verschiedenen Namen (intern, extern) funktioniert. Evtl. einfach zwei virtuelle Webserver laufen lassen. Natürlich kannst du auch HTTP deaktivieren, nur dann muss man immer https:// eingeben. Ich finde eine automatische Umleitung von HTTP auf HTTPS einfach schöner.
Hallo, das klappt bei mir nur entweder oder. Es handelt sich um eine Testinstallation von Nextcloud :roll: und habe mal verschiedene Anleitungen probiert.

nextcloud-redirect.conf

Code: Alles auswählen

Alias /nextcloud "/var/www/nextcloud/"

<IfModule mod_ssl.c>
   <VirtualHost *:443>

     DocumentRoot /var/www/nextcloud

     <Directory /var/www/nextcloud/>
       Options +FollowSymlinks
       AllowOverride All

      <IfModule mod_dav.c>
        Dav off
      </IfModule>

       SetEnv HOME /var/www/nextcloud
       SetEnv HTTP_HOME /var/www/nextcloud
     </Directory>

     <IfModule mod_headers.c>
          Header always set Strict-Transport-Security "max-age=15768000; preload"
     </IfModule>

      SSLEngine on
      SSLCertificateFile /etc/apache2/ssl/apache.crt
      SSLCertificateKeyFile /etc/apache2/ssl/apache.key

   </VirtualHost>
</IfModule>

Dann musste man laut Anleitung noch eine nextcloud-redirect.conf erstellen, wobei es unter ServerName darauf ankommt, wer da nun sein https automatisch bekommen soll. In dem Fall intern.
<VirtualHost *:80>
ServerName servername
ServerAdmin root@tservername

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>
Das ist blöd, finde ich, denn Roundcube macht da keine Probleme.

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: Https erzwingen

Beitrag von uname » 13.12.2016 20:41:19

Hallo, das klappt bei mir nur entweder oder.
Genau so war es auch gemeint. Wenn du den Server konfigurieren kannst, nutzt du die erste Möglichkeit. Hast du nur Zugriff auf den Webspace eher die zweite Möglichkeit.
Was passiert, wenn du für <VirtualHost>...</VirtualHost> die erste Möglichkeit nutzt? Leider kenne ich mich mit Nextcloud nicht aus. Ist Nextcloud ein eigener Webserver oder integriert der sich irgendwie in Apache2?

Antworten