Modius - Techblog

  • Ansible
  • Docker
  • DevOps
  • Gastautor werden
  • Newsletter abonnieren
  • Über Mich
  • Kontakt

Nextcloud https mit self-signed Zertifikat einrichten

Veröffentlicht am 15. September 2017 von Christian Piazzi 34 Kommentare , Aktualisiert am 26. Juli 2018
Geschätzte Lesezeit: 2 Minuten

Hier auf dem Blog habe ich neulich erklärt, wie man Nextcloud unter Ubuntu 16.04 installiert. Diese Installation wollen wir heute nun etwas sicherer machen, indem wir die Verbindung zum Server mittels SSL Zertifikat verschlüsseln. Dafür werden wir uns selbst ein self-signed Zertifikat auf unsere Nextcloud Server erstellen und dieses anschließend in die Nextcloud Konfiguration einbinden.

Aktivieren des SSL Modules für Apache2

Damit wir ein self-signed Zertifikat auf unserem Webserver für Nextcloud verwenden können, müssen wir zuerst das entsprechende Apache2 Modul für SSL aktivieren.

Shell
1
a2enmod ssl

Anschließend müssen wir apache2 neustarten.

1
systemctl restart apache2.service

Erstellen des self-signed Zertifikat

Im nächsten Schritt erstellen wir zuerst einen Ordner für das SSL Zertifikat.

Shell
1
sudo mkdir /etc/apache2/ssl

Nachdem wir einen Ordner zum Ablegen des Zertifikates erstellt haben, müssen wir dieses jetzt erzeugen. Dafür verwende ich den folgenden Befehl:

1
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/nextcloud.key -out /etc/apache2/ssl/nextcloud.crt

Nach der Eingabe des Befehls werden einige Information von uns abgefragt. Diese gilt es dann entsprechend auszufüllen. Wenn wir nun in den Ordner /etc/apache2/ssl schauen, sollten dort eine nextcloud.key und eine nextcloud.crt liegen.

Shell
1
2
3
4
5
6
7
8
root@nextcloud:/etc/apache2/ssl# ls -lsia
insgesamt 24
801308 4 drwxr-xr-x 2 root root 4096 Aug 17 19:52 .
792352 4 drwxr-xr-x 9 root root 4096 Aug 13 10:51 ..
801310 4 -rw-r--r-- 1 root root 1407 Aug 13 10:52 apache.crt
801309 4 -rw-r--r-- 1 root root 1704 Aug 13 10:52 apache.key
801312 4 -rw-r--r-- 1 root root 1704 Aug 17 19:52 nextcloud.key
801313 4 -rw-r--r-- 1 root root 1229 Aug 17 19:52 nextcloud.crt

Erstellen von nextcloud-ssl.conf

Um das soeben erstelle Zertifikat einzubinden, erstellen wir in /etc/apache2/site-available eine neue Datei mit dem Namen nextcloud-ssl.conf. Diese wird mit einem Editor geöffnet. Anschließend wird die Datei mit dem folgenden Inhalt befüllt.

Shell
1
2
3
4
5
6
7
8
9
<VirtualHost *:443>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/nextcloud
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/nextcloud.crt
        SSLCertificateKeyFile /etc/apache2/ssl/nextcloud.key
</VirtualHost>

Anschließend müssen wir die Konfiguration noch aktivieren.

Shell
1
a2ensite nextcloud-ssl.conf

Damti die Einstellungen jetzt auch geladen werden, müssen wir den Webserver einmal neustarten.

Shell
1
systemctl restart apache2.service

Prüfen der Nextcloud https Verbindung

Zum Testen können wir Nextcloud im Browser mit https:// aufrufen. In meinem Fall würde der Aufruf so aussehen:

https://192.168.10.69/nextcloud/

In dem Fenster das sich nun öffnet, werden wir darauf hintegwiesen, dass die Verbindung nicht sicher ist. Dies liegt daran, dass wir an dieser Stelle ein self-signed Zertifikat verwenden. Würden wir hier ein offizielles Zertifikat einer Prüfstelle verwenden oder zb. LetsEncrypt, würde dies nicht auftauchen.

Wenn wir uns die Erweiterten Informationen einblenden lassen, können wir auf die Seite weitergeleitet werden.

https Fehlermeldung

Wir haben nun unsere Verbindung mittels SSL verschlüsselt. Auch wenn oben das https durchgestrichen ist, funktioniert es genau so, wie mit einem Zertifikat einer entsprechenden Prüfstelle.

nextcloud https frontend

 

Kategorie: Linux Tags: Cloud, https, Nextcloud, SSL

Über Christian Piazzi

Ich blogge hier über alles, was mir so in meinem ITler Altag über den Weg läuft =)
Man findet mich privat bei Google+ und Twitter

Kommentare

  1. Armin meint

    23. Dezember 2017 um 18:44

    Hallo, vielen Dank für die Anleitung. Hat alles geklappt, nachdem ich den kleinen Rechtschreibfehler entdeckte, der sich eingeschlichen hat.
    In der Zeile für die Erstellung des Zertifikats steht nextcoud.crt und in der Sites-available dann wieder nextcloud.crt.

    wenn man das abgleicht, funktioniert es super.

    Antworten
    • Christian Piazzi meint

      23. Dezember 2017 um 23:05

      Danke für den Hinweis =)

      Antworten
  2. Rene meint

    24. Januar 2018 um 15:36

    Hallo, vielen Dank für die Anleitung. Allerdings habe ich folgendes Problem.
    Wenn ich ohne SSL auf die Nextcloud zugreife, dann habe ich die volle Bandbreite. Wenn ich das Self-Signed Zertifikat einsetze und über https auf die Nextcloud zugreife, dann habe ich nur noch rund 2MB/s. Mit http sind es 20-25MB/s. Was habe ich da falsch konfiguriert?

    Antworten
    • Christian Piazzi meint

      24. Januar 2018 um 18:39

      Hallo Rene,

      wie sieht den dein Setup aus? (CPU/RAM)
      Kann schon sein, dass es hier langsamer wird, weil der Datenstream ja verschlüsselt wird. Sollte aber eigentlich nicht so langsam werden.
      https://docs.nextcloud.com/server/9/admin_manual/configuration_server/oc_server_tuning.html
      Hier steht am Ende was bzgl. SSL und CPU Auslastung. Kannst du bei dir ja mal prüfen und mir kurz eine Rückmeldung geben =)

      Gruß

      Christian

      Antworten
    • Julian meint

      24. Januar 2018 um 18:52

      Ansonsten mal journalctl -xe ausführen und prüfen ob da irgendwelche Fehler ersichtlich sind. Eventuell auch mal in die error.log schauen und außerdem prüfen ob du irgendwelche langsamen Cipher Suites verwendest siehe hier: https://unhandledexpression.com/2013/01/25/5-easy-tips-to-accelerate-ssl/

      Antworten
      • Rene meint

        4. Februar 2018 um 20:33

        Hallo,

        vielen Dank für die Antworten. Hat sich erledigt. Der Down- und Upload funktionierte wohl immer super. Allerdings von dem Anschluss, von dem ich getestet habe, habe ich nur die ~2MB Download. Werde da nochmal die INet Verbindung prüfen warum das so ist. Von 2 weiteren Glasfaser Anschlüssen habe ich vollen Download Speed.

        Antworten
  3. Seppi meint

    3. April 2018 um 19:33

    Hallo

    vielen Dank für den hilfreichen Artikel. Leider wird beim generieren des Zertifikats die Datei „nextcoud.crt“ nicht erstellt.

    So sieht es bei mir aus:

    # sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/nextcloud.key -out /etc/apache2/ssl/nextcloud.crt
    Generating a 2048 bit RSA private key
    ………………………………….+++
    ………………………………………………………………………………………………………………………….+++
    writing new private key to ‚/etc/apache2/ssl/nextcloud.key‘
    —–
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter ‚.‘, the field will be left blank.
    —–
    Country Name (2 letter code) [AU]:problems making Certificate Request

    Was mache ich nicht richtig?

    Vielen Dank und Grüße Seppi

    Antworten
  4. Linus meint

    15. April 2018 um 02:34

    Hallo noch mal,
    inzwischen läuft alles…super Anleitung.

    Noch eine Abschließende Frage…wenn ich mich unter iOS mi meiner Nextcloud verbinden will kommt direkt die Warnung das das Zertifikat nicht akzeptiert wird.
    Kommt damit dann eine verschlüsselte Verbindung Grundsätzlich nicht zustande?

    Antworten
  5. Jürgen Diermann meint

    13. Februar 2019 um 22:16

    Hallo Christian,
    vielen Dank für die gute Anleitung! Bei mir werden leider die Dateien apache.crt und apache.key nicht erstellt. Bei der Abfrage: /etc/apache2/ssl# ls -lsia
    werden nur
    insgesamt 16
    angezeigt.
    Wenn ich die Seite über https aufrufe erscheint
    Not Found
    The requested URL /nextcloud/ was not found on this server.
    Was kann ich ändern?
    Mit freundlichem Gruß
    Jürgen

    Antworten
    • Christian Piazzi meint

      13. Februar 2019 um 22:21

      Hallo Jürgen,

      bekommst du einen Fehler wenn du das Zertifikat erstellen willst? Ansonsten kannst du mal schauen ob er die Zertifikate wo anders anleget zb. mit locate oder find.
      Verwendest du für das SSL Cert erstellen eine sudo vor dem Befehl oder bist der User root? Glaub sonst hat man nicht die notwendigen Rechte.

      Gruß

      Christian

      Antworten
  6. harry meint

    28. Mai 2019 um 11:21

    danke für die anleitung aber warum bekomme ich jetzt wenn ich extern auf meine cloud zugreifen möchte jetzt nur die apache landing page …??

    Antworten
    • Christian Piazzi meint

      28. Mai 2019 um 19:23

      Hi Harry,

      welche URL rufst du den auf? Wenn du nur die IP Adresse eingibst, landest du auf der Landingpage von Apche. Wenn du die Konfiguration so durchgeführt hast wie oben beschrieben, dann musst du /nextcloud hinter die IP schreiben.

      Ansonsten melde dich einfach noch mal kurz =)

      Gruß
      Christian

      Antworten
  7. Jonas Loebell meint

    1. Juni 2019 um 07:28

    Hallo Christian,

    vielen Dank für die Anleitung.
    Leider bekomme ich nach „a2ensite nextcloud-ssl.conf“ die Fehlermeldung „Site nextcloud-ssl does not exist!“.
    Fällt Dir dazu eine Lösung ein?

    Vielen Dank!

    Gruß
    Jonas

    Antworten
    • Christian Piazzi meint

      3. Juni 2019 um 15:05

      Hallo Jonas,

      ich würde jetzt erstmal auf einen Schreibfehler im Dateinamen tippen.
      Versuchst du das mit dem normalen User oder root? Kannst dir auch noch mal die Rechte der Datei anschauen.
      Sag kurz bescheid ob das dein Problem löst =)

      Gruß

      Christian

      Antworten
    • HerryStoffel meint

      21. Februar 2021 um 17:38

      Bei mir klemmt es auch hier / verstehe nicht wo ich die .conf Datei anlegen muß.
      Habe sie aktuell im Ordner ssl erstellt.

      Erstellen von nextcloud-ssl.conf
      Um das soeben erstelle Zertifikat einzubinden, erstellen wir in /etc/apache2/site-available eine neue Datei mit dem Namen nextcloud-ssl.conf. Diese wird mit einem Editor geöffnet. Anschließend wird die Datei mit dem folgenden Inhalt befüllt.

      Wenn ich bekomme ich „a2ensite nextcloud-ssl.conf“ durchführe, bekomme ich auch auch die Fehlermeldung
      „Site nextcloud-ssl does not exist!“.

      Was mache ich hier falsch

      Antworten
  8. Jonas Loebell meint

    3. Juni 2019 um 17:34

    Hallo Christian,

    ich habs gefunden.
    Ich musste die nextcloud-ssl.conf nach /etc/apache2/sites-available (also plural) verschieben.

    Vielen Dank für die Anleitung, jetzt bin ich sicher ;-)

    Gruß

    Jonas

    Antworten
  9. Leon-Alexander meint

    3. Juli 2019 um 15:21

    Hallo, ich habe folgendes Problem, wenn ich auf die Website gehe bekomme ich folgendes angezeigt:
    1xx.1×7.2x.x3 hat die Verbindung unerwartet geschlossen.
    Versuchen Sie Folgendes:

    Verbindung prüfen
    ERR_CONNECTION_CLOSED
    Manchmal auch
    err_ssl_protocol_error

    Antworten
    • Leon-Alexander meint

      3. Juli 2019 um 15:37

      Übrigens, ich kann Apache2 nicht mehr neustarten, hier apache2 Server ausgabe:
      ● apache2.service – The Apache HTTP Server
      Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
      Drop-In: /lib/systemd/system/apache2.service.d
      └─apache2-systemd.conf
      Active: failed (Result: exit-code) since Wed 2019-07-03 09:33:44 EDT; 53s ago
      Process: 13454 ExecStop=/usr/sbin/apachectl stop (code=exited, status=1/FAILURE)
      Process: 13660 ExecStart=/usr/sbin/apachectl start (code=exited, status=1/FAILURE)
      Main PID: 13302 (code=exited, status=0/SUCCESS)

      Jul 03 09:33:44 new.server.vps systemd[1]: Starting The Apache HTTP Server…
      Jul 03 09:33:44 new.server.vps apachectl[13660]: AH00526: Syntax error on line 5 of /etc/apache2/sJul 03 09:33:44 new.server.vps apachectl[13660]: CustomLog takes two or three arguments, a file naJul 03 09:33:44 new.server.vps apachectl[13660]: Action ’start‘ failed.
      Jul 03 09:33:44 new.server.vps apachectl[13660]: The Apache error log may have more information.
      Jul 03 09:33:44 new.server.vps systemd[1]: apache2.service: Control process exited, code=exited stJul 03 09:33:44 new.server.vps systemd[1]: apache2.service: Failed with result ‚exit-code‘.
      Jul 03 09:33:44 new.server.vps systemd[1]: Failed to start The Apache HTTP Server.
      lines 1-17/17 (END)

      Antworten
      • Leon-Alexa der meint

        3. Juli 2019 um 17:24

        Ich könnte den Fehler beheben, nun habe ich das Problem wenn ich mit https drauf bin bekomme ich die meldung:
        Not Found
        The requested URL /nextcloud was not found on this server.

        Apache/2.4.29 (Ubuntu) Server at 1**.*67.29.8*Port 443

        Antworten
        • Modius meint

          4. Juli 2019 um 21:31

          Hi,

          Was ist wenn du nur die IP Adresse ohne /nextcloud aufrufst?

          Gruß

          Christian

          Antworten
  10. jojocw meint

    12. Februar 2020 um 20:51

    Hallo,

    bei mir kommt beim Aufruf mit https meine Fritzbox. Obwohl ich eine Weiterleitung auf meinen Server angelegt habe.

    Allerdings vergibt er dabei den port 64011

    Welchen Port muss man den beim Anlegen der Datenbank eingeben?

    Grüße

    Antworten
  11. Stefan meint

    24. Mai 2020 um 14:09

    Hallo,

    hat bei mir alles wunderbar geklappt.
    Das Zertifikat ist jetzt aber leider abgelaufen.
    Was ist zu tun um das Zertifikat zu verlängern? Alles wiederholen?

    Antworten
    • Christian Piazzi meint

      25. Mai 2020 um 07:09

      Hi Stefan,

      man kann es auch erneuern, aber ich denke wenn du das ganze einfach noch mal wie in der Anleitung machst ist es am einfachsten.
      Am besten benennst du das alte Cert um und erstellst das neue wieder unter dem ursprünglichen Namen.
      Dann musst du nur das Cert erneuer und nicht noch die Konfiguration ändern.

      Gruß
      Christian

      Antworten
  12. Sören meint

    2. Juni 2020 um 23:53

    Hallo! Ich habe auch ein Problem mit Nextcloud und zwar habe ich diese mit Dietpi auf dem Raspberry pi 4 installiert und bekomme nun die Meldung, daß ich nur mit http darauf zugreife, was muß ich machen um dies zu beheben? Bin leider noch zu sehr Anfänger was den Pi und Nextcloud betrifft, vielleicht hast du eine Idee?

    Vielen Dank!

    Antworten
    • Christian Piazzi meint

      3. Juni 2020 um 08:26

      Hi Sören,

      hast du die nextcloud-ssl.conf angelegt und aktiviert? Wie versuchst du das ganze aufzurufen?

      Gruß
      Christian

      Antworten
  13. Rene meint

    7. Juli 2020 um 18:10

    Danke für die super Anleitung. Hatte keine Fehler bei der Erstellung des Zertifikats,aber wenn ich jetzt die Seite aufrufe dann kommt erst die Meldung mit dem Zertifikat und wenn ich dann weiterklicke und sollte ja nextcloud starten kommt nur das:

    Not Found
    The requested URL was not found on this server.

    Was könnte ich da falsch gemacht habe? Mit http klappt es unter der Adressse.

    Danke für deine Hilfe

    Antworten
  14. Dumm meint

    15. Juli 2020 um 12:34

    Hallo Super Anleitung das habe ich gesucht, Danke dafür.
    Nach der Instalation kann ich mich wahlweise über http der https mich anwählen.
    Wie schalte ich jetzt aber die http ab um nur über die sichere Verbindung zu kommunizieren.

    Danke im Voraus für Eure Antworten.
    LG

    Antworten
    • Christian Piazzi meint

      16. Juli 2020 um 09:29

      Generell gibt es da mehrere Möglichkeiten.

      Du könntest z.b. den Virtual Host der Port 80 verwendet auskommentieren. Dann ist der Aufruf nur noch auf https möglich. Dann bekommst du aber soweit ich weis eine Fehlermeldung wenn du nur http eingibst.

      Die andere Möglichkeit ist, wenn jemand http aufruft, diesen aufruf auf https umzuleiten. Da gibt es zwei Möglichkeiten wie man das macht.
      Ich finde das dies hier ganz gut beschrieben ist: https://www.tecmint.com/redirect-http-to-https-on-apache/
      Ich persönlich bevorzuge die Konfiguration in einer .htaccess Datei.

      Hoffe das hilft euch weiter. Ansonsten meldet euch einfach nochmal =)

      Antworten
  15. Guenter meint

    15. Juli 2020 um 13:19

    Danke für so gute Erklehrung,
    Wie kann ich jetzt die unsicherre http verbindung abschalten, um nur über https zu kommunizieren.

    Danke im voraus für Eure Tipps.
    LG

    Antworten
    • Christian Piazzi meint

      16. Juli 2020 um 09:29

      siehe ein Kommentar weiter oben =)

      Antworten
  16. kwoscha meint

    17. November 2020 um 11:57

    Zunächst mal, danke für die Anleitung!

    Ich habe Nextcloud über einen Docker mit einer eigenen IP (mymcvlan) über OMV laufen.
    Das ist wahrscheinlich der Grund, warum ich zwei Dinge ändern musste, damit es bei mir läuft:

    1. Der Ordner in dem die nextcloud-ssl.conf erstellt werden muss heißt bei mir /etc/apache2/sites-available
    2. Der Ordner in der nextcloud-ssl.conf muss bei mir
    DocumentRoot /var/www/nextcloud
    heißen.

    Damit hat es geklappt.

    Will Nextcloud nur intern nutzen, allerdings will sich das iPhone nicht damit verbinden, weil es unbedingt eine gesicherte Verbindung benötigt.

    Antworten
  17. Manuel meint

    13. Mai 2021 um 17:44

    Hallo,

    danke für die Erklärung, ich bekomme allerdings nach Erstellung und Aktivierung der Zertifikates ebenfalls den gleichen Fehler wie Rene:

    Not Found
    The requested URL was not found on this server.

    Wenn ich in der URL Leiste auf „Nicht sicher“ klicke, wird mein self signed cert auch angezeigt, komme aber leider nicht auf die Nextcloud drauf.
    Kann es was damit zu tun haben, dass ich es über Docker auf meiner QnapNas Container Station laufen habe?
    Ich habe dem Container 3 Portweiterleitungen gegeben:

    – 49160:80
    – 49161:8080
    – 49162:443

    der interne Aufruf aus meinem Netzwerk ist https://qnapnas:49162

    Falls du mir helfen könntest wäre ich sehr glücklich :-)

    Antworten
  18. Sylvio Seidel meint

    29. Dezember 2021 um 10:56

    Hallo Christian

    alles soweit klar in der Beschreibung,
    nur startet die Seite ohne https( ist quasi rot durchgestrichen!)
    Bin leider auch kein Experte in solchen Dingen ( bin halt nur DBA!)

    Gruss Sylvio

    Antworten
  19. Thorben meint

    27. Januar 2022 um 16:00

    Hallo,

    ich bekomme nach dem https Aufruf auch folgende Fehlermeldung:
    Forbidden
    You don’t have permission to access this resource.

    Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.

    Apache/2.4.38 (Raspbian) Server at 192.xxx.xxx.xx Port 443

    Über http funktioniert wie gewohnt, woran kann das liegen ?

    Antworten

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Kategorien

  • Linux
  • Internet, Bloggen & Co
  • Programmierung
  • Sicherheit
  • Netzwerk & Co
  • Mikrokontroller
  • Windows

Beliebte Artikel

  • Docker Container – anzeigen, starten, stoppen und löschen
  • Nextcloud https mit self-signed Zertifikat einrichten
  • ioBroker auf dem Raspberry Pi installieren und konfigurieren
  • Soft- und Hardlinks unter Linux
  • Arten von Betriebssystemen

Neueste Kommentare

  • Docker Compose Guide - Modius - Techblog bei Docker Compose – Automatisiertes starten von Microservices
  • Keksiminer bei Minecraft Bukkit Server – dynmap installieren und konfigurieren
  • Thorben bei Nextcloud https mit self-signed Zertifikat einrichten
  • Sepp bei Automatisierte Dokumentation von Python Projekten mit sphinx
  • Sascha bei Arduino – 4fach 7-Segmentanzeige mit Schieberegister

Werbung

Archive

Kontakt, Datenschutz und Impressum

  • Kontakt
  • Datenschutz
  • Impressum

Schlagwörter

Anleitung Ansible Apache Apple App Store Automatisierung Blogparade C++ Centos CentOS7 centos 7 Container Datenbank DevOps Docker Dr. Racket Dr. Scheme funktional Gastartikel Google HowTo httpd Icinga2 Icinga 2 Installation itsm Linux Minecraft Monitoring mooc MySQL owncloud PHP Plugin Programmierung python Raspberry Pi Schritt für Schritt Server Sicherheit Tutorial Ubuntu Update Windows Wordpress

Copyright © 2023 · Outreach Pro on Genesis Framework · WordPress · Anmelden