Wenn ein Download an einer TLS-Prüfung scheitert, ist der schnelle Reflex oft, die Kontrolle einfach auszuschalten. Genau darum geht es hier: wie Wget mit Zertifikaten umgeht, was der Befehl zum Abschalten der Prüfung tatsächlich tut und welche saubereren Alternativen es gibt, wenn ein internes oder fehlerhaft konfiguriertes Zertifikat im Weg steht. Hinter der Suchanfrage wget ignore certificate steckt am Ende fast immer dieselbe Frage: Wie komme ich jetzt weiter, ohne mir unnötig ein Sicherheitsloch einzubauen?
Das Wichtigste in wenigen Punkten
- Wget prüft bei HTTPS nicht nur das Zertifikat, sondern auch, ob der Hostname zum Zertifikat passt.
- Die Option
--no-check-certificateschaltet diese Prüfung für genau einen Aufruf ab. - Der Notbehelf ist praktisch für Laborumgebungen, Tests und klar abgegrenzte interne Systeme, aber riskant im produktiven Einsatz.
- Sauberer sind eigene CA-Bundles, ein Vertrauensanker für interne Zertifikate oder in manchen Fällen Public-Key-Pinning.
- Viele Fehler lassen sich nicht durch Weglassen der Prüfung lösen, sondern durch ein korrektes CA-Setup, eine passende Systemzeit oder den richtigen Hostnamen.
Warum Wget bei HTTPS überhaupt stoppt
Wget behandelt HTTPS nicht als reine Transportfrage, sondern als Vertrauensfrage. Seit langem ist die Zertifikatsprüfung standardmäßig aktiv: Das Programm vergleicht das Serverzertifikat mit vertrauenswürdigen Zertifizierungsstellen und prüft zusätzlich, ob der aufgerufene Hostname zu dem Zertifikat passt. Das ist wichtig, weil ein Zertifikat nicht nur „irgendwie gültig“ sein muss, sondern eindeutig zu dem Server gehören sollte, mit dem du wirklich sprechen willst.
Ein Zertifikat kann aus mehreren Gründen scheitern: Es ist selbstsigniert, abgelaufen, unvollständig verkettet oder für einen anderen Namen ausgestellt. Ein häufiger Spezialfall ist die Namensprüfung über das SAN-Feld das ist der Teil des Zertifikats, in dem die erlaubten Hostnamen stehen. Greifst du per IP-Adresse zu, obwohl das Zertifikat nur einen DNS-Namen enthält, meldet Wget oft einen Hostnamen-Konflikt, obwohl das Zertifikat technisch sonst in Ordnung ist.
Genau an dieser Stelle landet man schnell bei der Idee, die Prüfung ganz auszuschalten. Das ist verständlich, aber fachlich nur die halbe Antwort. Bevor ich den Bypass zeige, ist wichtig zu sehen, was er tatsächlich deaktiviert und warum das Sicherheitsmodell dadurch bewusst geschwächt wird.
Wie du die Zertifikatsprüfung gezielt abschaltest
Die direkte Variante ist einfach: Mit --no-check-certificate ignoriert Wget die Serverzertifikatsprüfung für diesen Aufruf. Das ist kein globaler Schalter, sondern eine optionale Abweichung für genau den Befehl, den du gerade absetzt.
wget --no-check-certificate https://beispiel.local/datei.tar.gzIn der Praxis setze ich das meist nur dann ein, wenn ich einen Download in einer isolierten Testumgebung verifizieren oder kurzfristig eine interne Anlage erreichen muss. Auch das hier ist möglich, falls du die Datei unter einem anderen Namen speichern willst:
wget --no-check-certificate -O paket.tar.gz https://beispiel.local/downloadWichtig ist die Grenze: Die Option macht aus einem unsicheren Zertifikat nicht plötzlich ein vertrauenswürdiges. Wget überspringt die Kontrolle einfach. Das gilt sowohl für die Vertrauenskette als auch für den Hostnamen. Wenn du also auf einen Server mit falschem Zertifikat triffst, sagt dir Wget danach nicht mehr zuverlässig, ob du wirklich mit dem gewünschten Ziel verbunden bist.
Genau deshalb lohnt sich der Blick auf die Risiken, bevor man den Befehl als schnelle Dauerlösung missbraucht. Danach wird schnell klar, warum ich den Schalter nur als Ausnahme behandle.
Warum der Notbehelf ein Sicherheitsrisiko bleibt
Ein abgeschalteter Zertifikatscheck öffnet die Tür für Man-in-the-Middle-Angriffe. Das klingt sperrig, ist aber einfach: Ein Angreifer oder ein falsch konfigurierter Proxy kann sich zwischen dich und den Zielserver setzen, und Wget merkt den Identitätsbruch nicht mehr. Besonders heikel wird das bei Downloads von Skripten, Installationspaketen, Backups oder internen Verwaltungsoberflächen.
Es geht dabei nicht nur um fremde Angreifer. Auch interne Netzwerke sind kein Freifahrtschein. Fehlkonfigurationen, Debug-Proxies oder alte Zertifikatsbestände führen schnell dazu, dass man sich an die Ausnahme gewöhnt und sie später versehentlich in automatisierte Jobs übernimmt. Genau das ist der Punkt, an dem aus einem kurzfristigen Workaround ein dauerhaftes Betriebsrisiko wird.
Ich trenne deshalb sehr strikt zwischen drei Fällen: kurzfristiger Test in einer kontrollierten Umgebung, Zugriff auf ein bewusst internes System und produktiver Abruf sensibler Daten. Im dritten Fall ist das Abschalten der Prüfung aus meiner Sicht fast immer die falsche Entscheidung. Wenn der Server vertrauenswürdig ist, sollte auch die Vertrauenskette sauber abbildbar sein.

Welche Alternativen ich in der Praxis bevorzuge
Die bessere Lösung ist fast immer, nicht die Prüfung auszuschalten, sondern das Vertrauen korrekt zu konfigurieren. Wget bietet dafür mehrere Wege, und je nach Umgebung ist einer davon deutlich sauberer als der andere.
| Option | Wann sinnvoll | Vorteil | Nachteil |
|---|---|---|---|
--ca-certificate=file |
Wenn du ein internes CA-Bundle oder ein spezielles Vertrauensanker-Zertifikat nutzen willst | Prüfung bleibt aktiv, aber gegen deine eigene Vertrauenskette | Du musst die CA-Datei pflegen |
--ca-directory=dir |
Wenn mehrere CA-Dateien verwaltet werden und ein Verzeichnis sinnvoller ist | Skaliert besser bei vielen Zertifikaten | Das Verzeichnis muss passend vorbereitet sein |
--pinnedpubkey=file/hashes |
Wenn du genau einen bekannten Server oder einen sehr festen Endpoint absichern willst | Sehr eng gebunden an den erwarteten Schlüssel | Weniger flexibel bei Zertifikatswechseln |
--no-check-certificate |
Nur für Notfälle, Tests und klar begrenzte Ausnahmen | Sofort nutzbar | Kein echter Schutz gegen Identitätsmissbrauch |
Für Debian- und Ubuntu-ähnliche Systeme ist der übliche Weg, das interne CA-Zertifikat in den lokalen Trust Store zu legen und die Zertifikatsdatenbank zu aktualisieren. Auf vielen Systemen ist das mit einem Import plus einer Aktualisierung der CA-Liste erledigt. Der genaue Pfad hängt von der Distribution ab, aber das Prinzip bleibt gleich: Das Betriebssystem soll dem Zertifikat vertrauen, nicht nur ein einzelner Befehl mit ausgeschaltetem Sicherheitsgurt.
Wenn du ein einzelnes internes Zertifikat testen willst, ist --ca-certificate oft die schnellste saubere Lösung. Bei mehreren internen CAs ist ein Verzeichnis mit CA-Dateien praktischer. Und wenn du einen sehr festen Zielserver absichern musst, kann Public-Key-Pinning die engste und damit kontrollierteste Variante sein. Als Nächstes lohnt sich ein Blick auf die Fehlermeldungen selbst, weil sie meistens schon ziemlich genau verraten, was wirklich kaputt ist.
Welche Fehlermeldungen dir wirklich etwas sagen
Wgets SSL-Meldungen wirken auf den ersten Blick sperrig, sind aber oft präziser, als man denkt. Wenn du sie richtig liest, brauchst du den Notbehelf viel seltener.
| Fehlermeldung | Typische Ursache | Was ich zuerst prüfe |
|---|---|---|
cannot verify ... certificate |
Unbekannte CA, selbstsigniertes Zertifikat oder unvollständige Kette | CA-Bundle, Zwischenzertifikate, interner Vertrauensanker |
common name doesn't match requested host name |
Hostname passt nicht zum Zertifikat | Aufruf per IP, falscher DNS-Name, fehlendes SAN |
unable to get local issuer certificate |
Ausstellerzertifikat fehlt oder wird nicht gefunden | Zwischenzertifikate und lokale CA-Liste |
certificate has expired |
Serverzertifikat abgelaufen oder Systemzeit stimmt nicht | Datum und Uhrzeit des Systems, Laufzeit des Zertifikats |
Gerade der letzte Punkt wird oft übersehen: Eine falsche Systemzeit erzeugt schnell scheinbar kryptische TLS-Fehler. Ich prüfe deshalb vor jeder weiteren Analyse zuerst Uhrzeit, Hostname und CA-Bestand. Das spart in der Praxis mehr Zeit als jedes vorschnelle Ausschalten der Prüfung.
Wenn du die Fehlermeldung sauber zuordnen kannst, ist die Entscheidung über den nächsten Schritt meist schon fast gefallen. Dann bleibt nur noch die Frage, wann der Bypass trotzdem vertretbar ist und wie man ihn eng begrenzt.
Wann ich den Umweg noch akzeptiere und wie ich ihn begrenze
Ich akzeptiere das Abschalten der Zertifikatsprüfung nur in eng umrissenen Situationen. Dazu gehören kurzfristige Tests in einer isolierten Laborumgebung, das schnelle Verifizieren eines internen Systems ohne sofort verfügbaren Trust-Store oder ein einmaliger Rettungszugriff, wenn die eigentliche Ursache bereits bekannt ist und separat behoben wird.
- Ich nutze den Bypass nie als Standard in Skripten, die dauerhaft laufen.
- Ich dokumentiere den Grund direkt im Deployment- oder Wartungskontext.
- Ich prüfe danach immer, ob ein internes CA-Zertifikat, ein korrektes SAN oder ein Trust-Store-Update die bessere Lösung ist.
- Ich vermeide ihn bei sensiblen Daten, Update-Mechanismen und Produktivsystemen.
Wenn ich einen bestehenden Ablauf verbessern muss, gehe ich meist in dieser Reihenfolge vor: erst Hostname und Uhrzeit prüfen, dann CA-Bestand und Zwischenzertifikate kontrollieren, danach das passende CA-Bundle einhängen oder importieren. Erst wenn das alles nicht sofort möglich ist und der Rahmen wirklich kontrolliert bleibt, kommt der temporäre Notbehelf zum Einsatz. Genau so bleibt die Lösung pragmatisch, aber nicht leichtfertig.
Die eigentliche Antwort auf das Thema ist deshalb recht nüchtern: Wget kann Zertifikatsfehler gezielt ignorieren, aber technisch sauberer ist fast immer, das Vertrauen korrekt aufzubauen. Wer sich an diese Reihenfolge hält, spart sich nicht nur Warnungen, sondern auch unnötige Sicherheitsrisiken im Alltag.