Vor einiger Zeit habe ich darüber berichtet, wie man sich ein automatisches Backup der MySQL-Datenbanken bei All-Inkl und einen automatisierten Download der Backups auf den heimischen Rechner einrichten kann. Nun gibt es diesbezüglich noch ein Problem, das mir jetzt aufegfallen ist. Seit Ende Februar sind anscheinend die Dateien gar nicht mehr heruntergeladen worden. Der einfache Grund: Der Provider, in meinem Fall -All-Inkl, hat allem Anschein nach das SSL-Zertifikat gewechselt oder erneuert. Auf jeden Fall hat sich der „Fingerabdruck“ des Zertifikats geändert und WinSCP vertraut diesem nun nicht mehr, da es sich nicht mehr um den in der Batch-Datei hinterlegten Fingerabdruck handelt.
Wenn man den Download manuell ausführt, wird einem der neue Fingerabdruck angezeigt und man kann einfach bestätigen, dass man den Download trotz des „falschen“ Zertifikats durchführen möchte:
Dies irgendwie automatisch in die Batch-Datei einzubauen würde allerdings die ganze Zertifikats-Geschichte an sich unsinnig machen, so dass ich erst einmal den neuen angegebenen Fingerabdruck in die ursprüngliche Batch-Datei einfüge, damit dem neuen Zertifikat grundsätzlich wieder vertraut wird:
1 2 3 4 5 6 7 8 |
C: cd "C:\Program Files (x86)\WinSCP\" winscp.com /ini=nul /command ^ "open ftpes://w123456:1234567890@domain.de/backups -certificate="xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx" -rawsettings ProxyPort=0" ^ "get -delete * D:\Backups\" ^ "close" ^ "exit" |
Es muss also der Parameter -certificate=“xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx“ angepasst werden.
Die grundsätzliche Fehlerbehebung sollte also eher sein, sich in irgendeiner Weise über den Ablauf des Zertifikats informieren zu lassen. Denn ansonsten wäre es möglich, das beispielsweise bei einem Virenbefall die DNS-Server umkonfiguriert wurden und die Login-Daten an den falschen Server übermittelt werden. Ich weiß nicht wie realistisch das in diesem Fall ist, aber es spricht nichts dagegen es direkt richtig zu machen 😉
Zwar wird mir in Filezilla angezeigt, wenn das Zertifikat erneuert wurde und man es dort akzeptiert, aber dabei denkt man nicht unbedingt an das Backup-Skript, zu mal man nicht jeden Tag etwas auf den FTP-Server hochschiebt.
Da All-Inkl FTPES anbietet, bei welchem vor der Übertragung der Zugangsdaten die unverschlüselte Verbindung auf SSL umgestellt wird, müsste ich für diese Verbindungsart rausfinden, wie man an dieses Zertifikat herankommt und den Fingerabdruck überprüft. Blöderweise kann man nicht einfach das Zertifikat der Hauptdomain bei All-Inkl prüfen, denn dieses ist nur das Let’s Encrypt-Zertifikat, welches lediglich für das https-Protokoll gilt. Meine ursprüngliche Idee das Zertifkat mit einem Powershell-Skript oder etwas ähnlichem zu prüfen, habe ich deshalb verworfen.
Deshalb kam mir in den Sinn, die Ausgabe von WinSCP zu loggen und diese im Anschluss nach einer entsprechenden Meldung zu durchsuchen. Das Logging aktiviert man recht einfach, indem man den Aufruf von WinSCP im Batch-Skript um den log-Parameter mit Angabe einer Log-Datei erweitert:
1 |
winscp.com /log="D:\backups\download.log" /ini=nul /command ^ |
Da mir das Abschicken einer E-Mail im Kontext mit der Batch-Datei zu lästig ist, lasse ich diese, wenn der entsprechende Text („Zertifikat des Server ist unbekannt“) gefunden wird, einfach eine Text-Datei auf den Desktop ablegen:
1 2 3 4 5 |
findstr /c:"Zertifikat des Server ist unbekannt" "D:\backups\download.log" > nul if not errorlevel 1 ( echo 1 >"E:\Desktop\SSL-ZERTIFIKATE FUER FTP ABGELAUFEN.txt" ) |