Hinweis: Dieser Beitrag ist mittlerweile veraltet. Jetzt benutze ich letsencrypt.
haraldwingerter.de/?p=601
letsencrypt.org
Seinen OwnCloud-Server kann man gut mit einem selbst signierten SSL-Zertifikat versehen und erhält alle Vorteile dieser sicheren Verbindungsart. Bei Aufruf der Seite wird der Browser einen zwar vor einer möglichen unsicheren Webseite warnen, aber da die Seite nicht für die Öffentlichkeit bestimmt ist, spielt die Warnung für uns keine Rolle. Nur mit einem kostenpflichtigen SSL-Zertifikat wird man die Warnung vermeiden können.
Als erstes verwandele ich mich in einen root, um auch an gesperrte Verzeichnisse heranzukommen:
sudo -i
Der Schlüssel soll als /etc/ssl/private/myserver.key erzeugt werden.
openssl genrsa -out /etc/ssl/private/myserver.key 4096
Die Zahl 4096 gibt die Bit-Größe der Verschlüsselung an.
Das ssl-Zertifikat wird mit folgendem Befehl erzeugt. 365 gibt die Gültigkeitsdauer des Zertifikats in Tagen an, sha256 bestimmt den Signaturalgorithmus.
openssl req -new -x509 -key /etc/ssl/private/myserver.key -days 365 -sha256 -out /etc/ssl/certs/myserver.crt
Danach erscheinen einige Abfragen, die alle mit Return bestätigt werden können – bis auf eine! Bei Common Name muss man seinen Domainnamen oder die IP-Adresse eingeben.
Als nächsten Schritt werden die Konfigurationsdateien bearbeitet.
vim /etc/apache2/sites-enabled/000-default.conf
Folgende Zeilen werden am Ende der Datei hinzugefügt:
<VirtualHost *:443> DocumentRoot /var/www/html ServerName <mydomain.de> (ODER IP-Adresse) <IfModule mod_headers.c> Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload" </IfModule> SSLEngine on SSLCertificateFile /etc/ssl/certs/myserver.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key </VirtualHost>
Speichern und Beenden.
vim /etc/apache2/sites-available/default-ssl.conf
Folgende Einträge hinzufügen:
(Diese ersten vier Zeilen waren bei mir bereits eingetragen, sodass ich nach DocumentRoot nur noch das darauf Folgendes ergänzte.
<IfModule mod_ssl.c> <VirtualHost *:443> ServerAdmin webmaster@localhost DocumentRoot /var/www/html SSLEngine on SSLCertificateKeyFile /etc/ssl/private/myserver.key SSLCertificateFile /etc/ssl/certs/myserver.crt
Ports öffnen:
vim /etc/apache2/ports.conf
Dort muss stehen:
<IfModule mod_ssl.c> Listen 443 </IfModule>
Es kann sein, dass die Zeilen bereits in der Datei stehen, dann ist das ok.
Abschluss:
a2enmod ssl apache2ctl configtest
Wenn “Syntax OK” angezeigt wird, darf man sich freuen.
Und zum Abschluss Apache neu starten:
apache2ctl restart service apache2 restart
Hat man das SSL-Certificate so weit erstellt, kann man immer noch über eine unsichere Verbindung auf OC zugreifen; ein https wird vor der Adresse nicht zwingend erstellt. Um ein https zu erzwingen, ist es nötig, die .htaccess-Datei im OwnCloud-Ordner um zwei Zeilen zu ergänzen. Unterhalb der Zeile RewriteEngine on notiert man:
RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
Nach dem Speichern der .htaccess-Datei erneut Apache starten,
service apache2 restart
und anschließend wird der Aufruf von http auf https umgeleitet.
Als letzter Schritt wird der Zufgriff noch abgesichert mit folgendem Script (gilt nur für Ubuntu):
#!/bin/bash ocpath='/var/www/html/owncloud' htuser='www-data' htgroup='www-data' find ${ocpath}/ -type f -print0 | xargs -0 chmod 0640 find ${ocpath}/ -type d -print0 | xargs -0 chmod 0750 chown -R root:${htuser} ${ocpath}/ chown -R ${htuser}:${htgroup} ${ocpath}/apps/ chown -R ${htuser}:${htgroup} ${ocpath}/config/ chown -R ${htuser}:${htgroup} ${ocpath}/data/ chown -R ${htuser}:${htgroup} ${ocpath}/themes/ chown root:${htuser} ${ocpath}/.htaccess chown root:${htuser} ${ocpath}/data/.htaccess chmod 0644 ${ocpath}/.htaccess chmod 0644 ${ocpath}/data/.htaccess
Der Pfad zum xxx.cert sollte aber doch nicht in “prvate” liegen genau wie der Schlüssel?. Der Schlüssel wird dann bei gleichem Namen übergebügelt…Absicht?. Wieso dann den Pfad SSLCertificateFile /etc/ssl/certs/myserver.crt. Da wird nichts sein bei openssl genrsa -out /etc/ssl/private/myserver.key 4096.
Da stimmt was nicht oder ich brauch ne andere Brille
Hallo andre,
ich fürchte, ich habe deinen Kommentar noch nicht ganz richtig verstanden. Könntest du es bitte noch einmal etwas ausführlicher notieren.
Danke
Harald
einmal bei /etc/apache2/sites-enabled/000-default.conf
da fehlen 3 leerzeilen
SSLEngine on SSLCertificateFile /etc/ssl/certs/myserver.crt SSLCertificateKeyFile /etc/ssl/private/myserver.key
müsste
SSLEngine on
SSLCertificateFile /etc/ssl/certs/myserver.crt
SSLCertificateKeyFile /etc/ssl/private/myserver.key
und bei
/etc/apache2/sites-available/default-ssl.conf
hat sich zwischen DocumentRoot und SSLEngine
eine klammer dazwischen getan
DocumentRoot /var/www/html
SSLEngine on
aber sonst ein sehr gutes tut, ich danke dir
Hallo 2punkt,
vielen Dank für deine Hinweise. Ich habe es korrigiert.
Grüße
Harald
Die Installation von OC mit mysql hat nach deiner anleitung wunderbar funktioniert auf meinem raspi 2 unter jessie.
Was ich nicht hinbekommen ist die ssl installation nach dieser anleitung.
Apache funzt nach dieser installation nicht mehr habe schon 5 Anläufe genommen.
Hallo Wolfgang,
vielen Dank für deinen Kommentar. Ich habe diesen Artikel ganz am Anfang um einen Hinweis ergänzt. Probier es mal mit letsencrypt, dann bekommst du auch keine lästigen Warnhinweise mehr.