Ich nutze Owncloud als private Cloud für Dateien, die nicht zu Google kommen sollen. Dabei sollte eine mit TLS (SSL) gesicherte Verbindung zur Owncloud aufgebaut werden.
Owncloud und SSL
Wer sich kein SSL-Zertifikat (eigentlich TLS-Zertifikat) leisten kann/will/darf, kann auf einen SSL-Proxy zurückgreifen. Damit sind die Verbindungen gesichert und verschlüsselt, aber mit Nachteilen zur Same-Origin-Policy (Jeder Vorteil, muss mit einem Nachteil erkauft werden). Wer daher seine Owncloud auf einem eigenen Server betreibt, der sollte unbedingt ein eigenes SSL-Zertifikat nutzen. Per Google findet man leicht, wie man sich ein kostenloses Zertifikat besorgt. Diese Anleitung dient daher eher für Leute, die einen Webspace nutzen. Viele Hostinganbieter bieten (Reverse) SSL-Proxy für ihre Kunden an.
Vorbereitung
Hier nun eine aktuelle Anleitung, die mit Owncloud 7.0.4 funktioniert. Dabei ist sslproxy.de der benutze SSL-Proxy und XX.YY.ZZ.IP seine IP-Adresse. Diese kann leicht herausgefunden werden, indem man eine PHP-Datei mit dem Inhalt
[php] <?php
echo $_SERVER[‚REMOTE_ADDR‘];
?>
[/php] auf seinem Webspace erstellt und diese über den SSL-Proxy aufruft. Die angezeigte IP-Adresse ist die des Proxys. Es müssen nun zwei Dateien angepasst werden.
.htaccess und config.php anpassen
In der .htaccess im Owncloud Verzeichnis muss zu Beginn der Rewriteregeln unter „RewriteEngine on“ Folgendes eingetragen werden:
RewriteEngine on RewriteCond %{HTTP:X-FORWARDED-SERVER} !^sslproxy\.de [NC] RewriteRule .* https://sslproxy.de/%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Damit werden die direkte Aufrufe (http und https) auf die Owncloud Domain über den Proxy weitergeleitet. Wer möchte, dass Aufrufe über https nicht(!) weitergeleitet wird, der fügt ein „RewriteCond %{HTTPS} off“ hinzu.
Update 18.02.2015: Ab Apache 2.4 muss zusätzlich ein SetEnv HTTPS on angegeben werden:
RewriteEngine on SetEnv HTTPS on RewriteCond %{HTTP:X-FORWARDED-SERVER} !^sslproxy\.de [NC] RewriteRule .* https://sslproxy.de/%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Die config.php unter /config muss ebenfalls angepasst werden, damit die Owncloud weiß, dass es über einen Proxy geht.
[php] ‚overwritehost‘ => ’sslproxy.de‘,
‚overwriteprotocol‘ => ‚https‘,
‚overwritewebroot‘ => ‚/OWNCLOUD-URL‘,
‚overwritecondaddr‘ => ‚^XX.YY.ZZ.IP$‘,
[/php] Bei Bedarf kann die config.php noch durch ‚forcessl‘ => true, ergänzt werden, was aber auch in den Owncloud-Einstellungen gemacht werden kann. Damit werden http-Aufrufe automatisch auf https weitergeleitet.