Nachdem man inzwischen niemandem mehr trauen kann, ist eine der häufigsten Fragen, wie man sich beim Surfen im Web absichern kann. Nun mag die Verwendung von SSL naheliegen, da aber auch den CAs nicht zu trauen ist – ganz abgesehen davon, dass das zu Grunde liegende zentralistische und hierarchische System kaputt ist – bleibt einem nicht viel Übrig, als jedem Website-Zertifikat einzeln zu vertrauen. Wie das geht, und welche Fallstricke es dabei gibt, möchte ich an dieser Stelle einmal zusammenfassen. Wer jedoch keine fundierten Kenntnisse über Kryptographie und die ganzen Zusammenhänge hat, sei ausdrücklich darauf hingewiesen, dass diese Anleitung eine Umgehung des in Firefox integrierten Trust Models darstellt und man daher nachfolgend vollständig auf sich selbst gestellt ist!
WARNUNG: Finger weg, wenn man sich nicht sicher ist!!!
Fangen wir an: als ersten Schritt sollte man seine Stammzertifikatsliste gründlich säubern. Der Shortcut sind 116 Bytes (leider nicht Tweet-Fähig ;-(), die dem Firefox eine leere Zertifikatsdatenbank geben:
cat <<SECUREFIREFOX | base64 -d | bzip2 -d > cert8.db
QlpoOTFBWSZTWcl5P9wAAM9/o/VBAggAEAAAwAABACIhmQYCABAACAAEiCAAVCUKAAGgaeSCKRJtTI
xDCZoR6pMp0VhFWWGXhJwoAXfpBWBUCcKoiLs3qhOTcKRRjrt/qO8Xknik7AAD8XckU4UJDJeT/cA=
SECUREFIREFOX
Diese Datei dem Firefox ins eigene Profil-Verzeichnis legen und gut ist – wer möchte, kann sich vorher noch ein Backup der alten Datenbank erzeugen. Im Anschluss geht man in die Optionen des Firefox und schaut unter Erweitert den Tab Verschlüsslung und öffnet dort die Zertifikatsverwaltung. Hier kontrolliert man, dass im Reiter Zertifizierungsstellen die Ansicht entweder leer ODER die aufgelisteten Zertifikate beim Klick auf „Vertrauen bearbeiten…“ keine Trust-Häkchen für irgendwas gesetzt haben.
Ist man mit diesem Schritt fertig, geht es jetzt noch daran, die Liste der akzeptierten Crypto-Verfahren etwas einzudampfen, da 3DES nicht mehr ganz zeitgemäß ist. Also öffnet man about:config und deaktiviert alle Cipher mit 128 Bit Schlüssellänge oder weniger. Alternativ kann man folgenden Abschnitt in seine prefs.js im Profil-Verzeichnis aufnehmen:
user_pref("security.ssl3.dhe_dss_aes_128_sha", false);
user_pref("security.ssl3.dhe_dss_camellia_128_sha", false);
user_pref("security.ssl3.dhe_dss_des_ede3_sha", false);
user_pref("security.ssl3.dhe_rsa_aes_128_sha", false);
user_pref("security.ssl3.dhe_rsa_camellia_128_sha", false);
user_pref("security.ssl3.dhe_rsa_des_ede3_sha", false);
user_pref("security.ssl3.ecdh_ecdsa_aes_128_sha", false);
user_pref("security.ssl3.ecdh_ecdsa_des_ede3_sha", false);
user_pref("security.ssl3.ecdh_ecdsa_rc4_128_sha", false);
user_pref("security.ssl3.ecdh_rsa_aes_128_sha", false);
user_pref("security.ssl3.ecdh_rsa_des_ede3_sha", false);
user_pref("security.ssl3.ecdh_rsa_rc4_128_sha", false);
user_pref("security.ssl3.ecdhe_ecdsa_aes_128_sha", false);
user_pref("security.ssl3.ecdhe_ecdsa_des_ede3_sha", false);
user_pref("security.ssl3.ecdhe_ecdsa_rc4_128_sha", false);
user_pref("security.ssl3.ecdhe_rsa_aes_128_sha", false);
user_pref("security.ssl3.ecdhe_rsa_des_ede3_sha", false);
user_pref("security.ssl3.ecdhe_rsa_rc4_128_sha", false);
user_pref("security.ssl3.rsa_aes_128_sha", false);
user_pref("security.ssl3.rsa_camellia_128_sha", false);
user_pref("security.ssl3.rsa_des_ede3_sha", false);
user_pref("security.ssl3.rsa_fips_des_ede3_sha", false);
user_pref("security.ssl3.rsa_rc4_128_md5", false);
user_pref("security.ssl3.rsa_seed_sha", false);
Soviel zum ersten Teil der Einrichtung. Nun kommen die Stolpersteine. Als erster Punkt wäre hier zu nennen, dass Firefox absofort JEDES Zertifikat anmeckern wird, welches man ihm vorsetzt und daher eigentlich auf nahezu jeder Seite eine Zertifikatswarnmeldung erscheinen wird. Das ist so korrekt und auch der Grund, warum man mit einem derart konfigurierten Browser wissen sollte, was man tut.
Bekommt man eine Zertifikatswarnseite sollte man zuerst unter technische Details nachgucken, worum es sich bei der Meldung handelt. Ist das Zertifikat abgelaufen oder ist das Zertifikat nicht bekannt? Besucht man eine Seite das erste Mal, so trifft vermutlich letzteres zu. Ist die Warnmeldung berechtigt, so kann man fortsetzen und wenn angeboten nach sorgfältiger Prüfung eine Zertifikatsausnahme anlegen. Wichtigste Prüfpunkte sind hierbei die ausstellende Zertifizierungsstelle, die Gültigkeitsdomain des Zertifikats, sein Verwendungszweck und der verwendete Schlüssel.
In die Quere kommen kann einem an dieser Stelle HSTS (HTTP Strict Transport Security), was verhindert, dass man die Warnmeldung wegklicken kann, wenn das verwendete Zertifikat ungültig ist. Leider beißt sich beim Firefox in Sicher hier der Firefox in den Schwanz, da er keinem vertraut und daher alle neuen Zertifikate – auch legitim vom Website-Betreiber verwendete – als unvertraut angesehen werden und daher abgewiesen werden.
Interessant ist hierbei, dass Firefox zwar nicht direkt auf der Sperrseite erlaubt, ein Zertifikat zu entsperren, aber über einen Umweg ist es dennoch möglich, eine Ausnahme bei HSTS zu definieren. Hierzu muss man die Zertifikatsverwaltung öffnen und explizit auf der Seite Server-Zertifikate den Punkt „Ausnahme hinzufügen…“ bemühen. Dort gibt man die Domain des durch HSTS blockierten Seite ein und wählt „Zertifikat herunterladen…“ Hat man sich von der Echtheit des heruntergeladenen Zertifikats überzeugt, bestätigt man diese Ausnahme und kann nun durch Refresh der Webseite diese ganz normal nutzen.
Und nun viel Spaß mit Firefox in Sicher! 😉