Update 05.05.2014: Markus wies mich freundlicherweise in einem Kommentar darauf hin, dass es anscheinend ab Version 6 nicht mehr so aufwendig ist, ownCloud mit einem SSL-Proxy zu konfigurieren:
„Seit Version 6 muss man sich nur über den SSL Proxy als admin einloggen und https aktivieren. Der Rest konfiguriert sich selber und funktioniert. Zumindest war das bei mir so.“
Dann hoffe ich mal, dass es bei euch auch so sein wird. Ich kann es leider nicht mehr für euch testen, da ich mittlerweile nicht mehr ownCloud verwende.
Will man private Daten in der Wolke ablegen, ist eine sichere Verbindung zum Server Pflicht. So werden auch bei allen größeren Cloud-Anbietern die Verbindungen zwischen Client und Server mit SSL-Zertifikaten gesichert.
Will man seine privaten Daten nicht in fremde Hände geben, kommt man um eine selbst-betriebene Lösung nicht herum, sei es auf dem eigenen Webspace oder auf dem kleinen Server zuhause. Mit der Veröffentlichung der Version 5 ist nun ownCloud wieder in aller Munde. Natürlich konnte ownCloud auch schon vorher mit dem SSL-Protokoll betrieben werden. Wer allerdings kein SSL-Zertifikat sein Eigen nennen konnte und auf einen SSL-Proxy zurückgriff, hatte das Nachsehen. Denn ohne selbst Hand anlegen zu wollen, scheiterte ein Zugriff auf das ownCloud-Backend über einen SSL-Proxy bis zur letzten stabilen Version 4.5.
Dieser Umstand wurde nun in der neuen Version 5 behoben, sodass man die Verbindung zur eigenen Wolke nun auch über einen SSL-Proxy absichern kann. Wie dies geht, soll im Folgenden beschrieben werden. Die Anleitung ist am Beispiel von HostEurope beschrieben, die für ihre Kunden einen kostenlosen SSL-Proxy anbieten. In ähnlicher Form wird es sicherlich auch bei anderen Webhostern funktionieren.
1. Parameter in ownCloud anpassen
Normalerweise sollte ownCloud den Hostnamen, das Protokoll oder das Wurzelverzeichnis automatisch erkennen. Falls dies nun nicht geschieht, kann man diese Parameter überschreiben. Dazu findet man in dem Verzeichnisconfig der ownCloud-Installation die Datei config.php. In dieser erweitert man den Bereich $CONFIG um folgende Zeilen:
"overwritehost" => "ssl-proxy.tld", "overwriteprotocol" => "https", "overwritewebroot" => "/domain.tld/owncloud", "overwritecondaddr" => "^10\.0\.0\.1$",
Für den SSL-Proxy von HostEurope müsste das Ganze dann folgendermaßen aussehen:
<?php $CONFIG = array ( "overwritehost" => "ssl.webpack.de", "overwriteprotocol" => "https", "overwritewebroot" => "/domain.tld/owncloud", //Pfad zu deiner ownCloud-Installation "overwritecondaddr" => "^10\\.30\\.7\\.1(?:37|38|39|40)$", //IP-Adressen des HostEurope-Proxy (10.30.7.137, 10.30.7.138, 10.30.7.139 und 10.30.7.140) );
Nun sollte man auch auf das Backend von ownCloud per SSL-Proxy Zugriff haben. Möchte man auf ownCloud nur über eine sichere Verbindung zugreifen, sodass ein Zugriff über eine http-Verbindung gar nicht möglich ist, muss man in einem zweiten Schritt noch die .htaccess im Wurzelverzeichnis der ownCloud-Installation anpassen.
2. Anpassung der .htaccess
Die mit der Installation von ownCloud bereits angelegte .htaccess-Datei ergänzt man nach dem Eintrag RewriteEngine on um folgende zwei Zeilen (hier am Beispiel des HostEurope-Proxy mit vier IP-Adressen):
RewriteCond %{REMOTE_ADDR} !^10\.30\.7\.1(?:37|38|39|40)$ RewriteRule ^ https://ssl.webpack.de/%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Nun sollte man beim Aufrufen der ownCloud-Netzadresse „http://domain.tld/owncloud“ automatisch auf „https://ssl-proxy.tld/domain.tld/owncloud“ weitergeleitet werden.
Programm-Versionen, auf die sich dieser Artikel bezieht:
ownCloud: 5.0
(Hier ist die alternative Lösung, die ich für Owncloud nutze)
Alternativ könnte man auch einen SSH-Tunnel bauen, wenn man SSH-Zugriff hat. Dann wird die Kommunikation von Browser und Owncloud durch SSH verschlüsselt getunnelt.
Im Prinzip reicht dazu ein Einzeiler (z.B. als Alias) oder man nutzt Putty mit einer abgespeicherten Konfiguration. Im Browser muss man dann als Proxy localhost (samt Port) einstellen. Mit Foxy-Proxy spart man sich das ständige Umstellen der Proxy-Konfig.
Wies mit dem SSH-Tunnel geht, habe ich hier mal zusammengefasst:
http://netz10.de/2011/01/10/ssh-tunnel/
Interessante Alternative. Leider kann ich sie bei mir nicht testen, da ich keinen SSH-Zugriff auf meinen Webspace habe.
Hi.
Was ist denn „sicherer“ – die Lösung per SSL-Proxy oder per SSH? Letzteres kann ich ja nicht ohne weiteres auf einem Fremdrechner umsetzen, oder?
Und lohnt es sich womöglich (für 30 Euro im Jahr) ein SSL-Zertifikat zu bestellen – nur für ownCloud?
https://www.hosteurope.de/de/Server/Addons/
Danke!
Also SSH ist immer sicherer als SSL, nur gibt es auf „Standard“-Webspace i.d.R. kein SSH-Zugriff. Sollte man doch welchen haben, so kann man mit genanntem „Putty“ gut darauf zugreifen. Und das muss man nicht installieren, würde also auch von einem USB-Stick laufen, falls man an einem Fremdrechner sitzt.
Wenn man Owncloud nur privat nutzt, braucht man aus meiner Sicht kein SSL-Zertifikat kaufen. Man kann sich so ein Zertifikat auch selbst erstellen. Das funktioniert dann genauso wie mit einem gekauften, nur dass der Browser immer eine Sicherheitsmeldung bringt, da es nicht in seiner Datenbank vorhanden ist.
Ah – OK. In dem Konfigurationstool meines Webhosters kann man tatsächlich Zertifikate hochladen; wusste aber nicht, dass man sich auch selbst welche erstellen kann.
Vielen Dank für Deine Hilfe!
Hallo,
vielen Dank für den Beitrag. Hat mir sehr geholfen. Die Autokonfiguration von owncloud hat bei mir nicht funktioniert.
Warum hast du nicht direkt eine SSL-Verbindung über 443 erstellt. Kannst du doch ganz einfach in dem Webserver deines Vertrauens einstellen. Oder hast du bei deinem Hoster nur Webspace ohne Zugriff auf die Servereinstellungen?
Du hast ins Schwarze getroffen 😉 … stinknormaler Webspace ohne jegliche Möglichkeit der Einflussnahme auf den Server, leider.
Super Tipp! Ich habe meine ownCloud auch bei Hosteurope liegen und hatte immer Probleme den SSL-Proxy zu nutzen. Funktioniert nun einwandfrei. Einzig die iOS-Clients machen Probleme da ich Dateien zwar hochladen kann aber nicht mehr anzeigen da er mir sagt sie wären defekt dabei habe ich mit jedem anderen client problemlos zugriff darauf und ungesichert über den iOS-Client ebenfalls. Sehr seltsam.
Zu iOS-Anwendungen kann ich dir leider nichts sagen, da ich Android verwende und da funktioniert es mit der ownCloud-App ohne Probleme. Da könntest du nur mal beim Entwickler der App nachfragen inwiefern SSL-Unterstützung integriert ist und ob es problemlos mit SSl-Proxys funktionieren müsste.
Heyho,
cooler Artikel =)
Hab diesen gleich mal auf meinem Blog erwäht.
http://www.modius-techblog.de/linux/einrichten-einer-sicheren-verbindung-zum-owncloud-server/
Gruß
Christian
Vielen Dank für den Tipp! So hat es geklappt. Nur das Synchronisieren mit iOS hakt noch.
Hallo Sören
Ich hatte das auch schon soweit, nur „overwritecondaddr“ hatte ich nicht.
Ich kann jetzt über das Web Front-end auf den Kalender zugreifen
Nur über WebDAV bekomme ich Fehlermeldungen.
Thunderbird zeigt einen Fehler 403.
Wenn ich den Verbindungs-URL direkt im Browser versuche, dann sehe ich
Requested uri (SERVERNAME.de/owncloud/remote.php/caldav/calendars/USERNAME/defaultcalendar) is out of base uri (/SERVERNAME.de/owncloud/remote.php/caldav/)
In meinem URI fehlt der führende „/“.
Hat da jemand eine Idee?
Die ANtwort habe ich selbst gefunden: Es fehlte ein „/“.
Bei hosteurope klappt es auch owncloud über:
https://ssl.webpack.de//owncloud
anzusprechen
https://ssl.webpack.de/YOURDOMAIN/owncloud
Hey! Klasse! Vielen Dank für diese wertvollen Hinweise!
Seit Version 6 muss man sich nur über den SSL Proxy als admin einloggen und https aktivieren. Der Rest konfiguriert sich selber und funktioniert. Zumindest war das bei mir so.
Leider kommt dann bei mir dieser Fehler:
Firefox kann keine Verbindung zu dem Server unter ssl.webpack.de aufbauen.
Hi,
danke für den Beitrag. Funktioniert auch mit der aktuellen owncloud-Version (7) out of the box – einfach die config.php anpassen und gut. Die Änderungen an der .htaccess waren bei mir nicht nötig, man kann sich einfach per SSL einloggen und dann den Haken bei „Erzwinge verschlüsselte Verbindung“ (oder so ähnlich) setzen.
Noch ein Tipp (hat bei mir kurz für Verwirrung gesorgt): Nach dem Umstellen auf SSL konnte ich mich erstmal nicht mehr einloggen, mit einem anderen Browser ging’s aber. Ich habe dann im ersten Browser alle Cookies für meine Domain und für ssl.webpack.de gelöscht, das hat das Problem behoben.
LG,
thw
Vielen dank für die ganzen Hinweise. Doch wie wende ich ein gekauftes ssl Zertifikat Auf die Cloud an ?
Da kenne ich mich leider nicht aus. Aber ich vermute mal, dass du dies über die Verwaltung deiner Domain bei deinem Provider regeln musst.