SSL-Verschlüsselung von eigenem Zertifikat auf Let's Encrypt umstellen

Hallo zusammen,

ich bin noch etwas neu, deswegen verzeiht, wenn ich euch zu wenig Informationen gebe.

Ich habe mir vor einiger Zeit einem YouTube-Tutorial folgend den Traum einer eigenen Nextcloud verwirklicht.^^
Kurz zusammengefasst: der apache2 Server und die Nextcloud laufen auf einem Raspberry Pi 4 Modell B; 4 GB, ARM-Cortex-A72 4 x, 1,50 GHz, 4 GB RAM. Das Datenverzeichnis liegt auf einer externen Festplatte (HDD), die knapp 500GB fasst und mit USB3.0 am Pi hängt. Die Nextcloud habe läuft sehr flüssig und einwandfrei - da hab ich keine Sorgen.

Hier noch ein paar Daten zum Setup:
Nextcloud 21.0.1
Apache/2.4.38
PHP 7.3.27-1
10.3.27-MariaDB-0+deb10u1
Raspbian GNU/Linux 10 (buster)
Kernel 5.10.17-v7l+

Ich habe obiger Anleitung folgend ein eigenes SSL-Zertifikat ausgestellt, jedoch erhält man dann immer diese gruselige Sicherheitswarnung, die für mich nach einmal akzeptieren nicht störend ist, aber wenn ich Dateien teile, dann will ich nicht, dass unerfahrere Nutzer darüber verwundert sind und ich jedes Mal darauf hinweisen muss. Deswegen möchte ich auf ein Let’s Encrypt Zertifikat umstellen.

Daher habe ich nun die Anleitung von Certbot befolgt und snapd installiert. Jedoch erhalte ich mit sudo certbot certonly --apache folgende Fehlermeldung:

Certbot failed to authenticate some domains (authenticator: apache). The Certificate Authority reported these problems:
  Domain: kaninchenbau.....org
  Type:   connection
  Detail: Fetching http://kaninchenbau.....org/.well-known/acme-challenge/LHIhFaPdzFz6BBPSkT0T7fSAsH3DxuoARFeCD2TMfx0: Error getting validation data

Hint: The Certificate Authority failed to verify the temporary Apache configuration changes made by Certbot. Ensure that the listed domains point to this Apache server and that it is accessible from the internet.

Some challenges have failed.

Ich habe daraufhin versucht das bisherige Zertifikat zu entfernen, und auf http umzuschalten, aber da bleiben alle Versuche erfolglos:

<?php                                                             
$CONFIG = array (                                                 
  'instanceid' => '...',                                 
  'passwordsalt' => '...',             
  'secret' => '...', 
  'trusted_domains' =>                                            
  array (                                                         
    0 => '...',                                         
    1 => 'kaninchenbau.....org',                                
  ),                                                              
  'datadirectory' => '/media/festplatte/nextcloud',               
  'dbtype' => 'mysql',                                            
  'version' => '21.0.7.0',                                        
  'overwrite.cli.url' => 'https://kaninchenbau.....org/',       
  'overwritehost' => 'kaninchenbau.....org',                                               
  ...

Hier habe ich die Zeile overwrite.cli.url auskommentiert. Außerdem habe ich in /etc/apache2/sites-available/000-default.conf von

<VirtualHost *:80>                                                                              
        DocumentRoot /var/www/nextcloud                                                         
                                                                                                
        ErrorLog ${APACHE_LOG_DIR}/error.log                                                    
        CustomLog ${APACHE_LOG_DIR}/access.log combined                                         
                                                                                                
        <IfModule mod_rewrite.c>                                                                
                RewriteEngine On                                                                
                RewriteCond %{HTTPS} off                                                        
                RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]                   
        </IfModule>                                                                             
</VirtualHost>                                                                                  
                                                                                                
<IfModule mod_ssl.c>                                                                            
        <VirtualHost *:443>                                                                     
                DocumentRoot /var/www/nextcloud                                                 
                SSLEngine on                                                                    
                SSLCertificateFile /var/cert/server.crt                                         
                SSLCertificateChainFile /var/cert/server.csr                                    
                SSLCertificateKeyFile /var/cert/server.key                                      
                <IfModule mod_headers.c>                                                        
                        Header always set Strict-Transport-Security "max-age=15768000; preload" 
                        Redirect 301 /.well-known/carddav /remote.php/dav                       
                        Redirect 301 /.well-known/caldav /remote.php/dav                        
                </IfModule>                                                                     
        </VirtualHost>
</IfModule>

zu dem geändert:

<VirtualHost *:80>                                                                             
        DocumentRoot /var/www/nextcloud
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>                                                                                  

<IfModule mod_ssl.c>
        <VirtualHost *:443>  
                DocumentRoot /var/www/nextcloud
        </VirtualHost>
</IfModule>

Auch ein a2dismod ssl hat nichts gebracht.

Achso und die Adresse ist eine DynDNS von noIP, falls das irgendetwas ausmachen sollte.

Kann mir hier jemand weiterhelfen? Ich wäre sehr dankbar darüber :slight_smile:
Liebe Grüße!

Keine Ahnung wofür das brauchst. Mach aber wenn möglich einen großen Bogen um Snap.

Damit Lets Encrypt das Zertifikat ausstellen kannst, muss aus dem Internet (also von Lets Encrypt) der Zugriff über Port 80 und Port 443 erreichbar sein. Es könnte sein, dass das nicht der Fall ist. Falls du die Ports 80 und 443 weitergeleitet hast und es sonst funktioniert hat, könnte es an deinem Webserver liegen. Vielleicht solltest du lieber alles neu machen. Auch kannst du vielleicht mal Teile dieser Anleitung verwenden.

1 Like

Das stand so in der Anleitung von Certbot. Wieso sollte man einen großen Bogen um Snap machen?

Das habe ich mir in der Tat schon gedacht, aber meine Konfiguration nicht so ändern können, dass es funktionierte. Mithilfe deiner verlinkten Anleitung habe ich dann ein alternatives config-File erstellt (das, was in der Anleitung vorgeschlagen war) und in der FritzBox Port 80 freigegeben (das habe ich glaube ich auch etwas spät bemerkt). Dann den Certbot seine Arbeit verrichten lassen wie in der Anleitung. Zum Schluss wieder zu meinem alten config-File gewechselt und in der FritzBox Port 80 geschlossen - funktioniert nun alles. :smiley:
Vielen Dank für die Hilfe!

Ich bin mir nicht sicher, ob es dann beim Update der Zertifikate in einigen Monaten Probleme gibt. Zudem ist Port 80 kein Sicherheitsrisiko, sofern sowieso mehr oder weniger alles auf SSL umgeleitet wird. TLS/SSL ist eine reine Transportverschlüsslung. Wenn jemand aus dem Internet deine Nextcloud hackt, dann wohl nicht, da der Webserver mit oder ohne SSL lief.

Snap ist die Möglichkeit mit ein paar Klicks eine Nextcloud ohne eigenes Wissen hochzuziehen. Vor einiger Zeit sollte ich mal das Zertifikat einer Snap-Installation bei einem Bekannten umstellen. Scheinbar sieht es Snap nicht vorher, dass man in der Migrationsphase zwei SSL-Zertifikate verwenden kann. Selbst hier im Forum hatte niemand eine Lösung für dieses Problem. Am Ende haben wir den alten schlechten Namen beibehalten, da sonst alle Links falsch oder mindestens ohne gültigem Zertifikat gewesen wären.