Zum Inhalt springen

Entzug des Vertrauens als Zertifizierungsstelle

Anfang 2016 ist es zu Unregelmäßigkeiten in der Zertifikatsvergabe bei WoSign, dem Mutterunternehmen von StartCom, gekommen. Zum einen wurden Zertifikate zurückdatiert ausgestellt, um eine Beschränkung von SHA1-Zertifikaten zu umgehen. Zum anderen haben StartCom und die Zertifizierungsstelle WoSign es versäumt, ihre Verbundenheit offen zu legen.

Im September 2016 hat Mozilla, der Hersteller des Internetbrowsers Firefox, Konsequenzen gegen die Zertifizierungsstelle angekündigt, da diese gegen die Richtlinien verstoßen hat. Als Konsequenz hat Mozilla am 24. Oktober 2016 angekündigt, mit dem kommenden Firefox Release 51 Zertifikaten der Zertifizierungsstelle das Vertrauen zu entziehen, die nach dem 21. Oktober 2016 ihre Gültigkeit erlangten. Google kündigte den gleichen Schritt für Google Chrome ab Version 56 an, Apple vertraut Zertifikaten von StartCom, die ab dem 1. Dezember 2016 ausgestellt wurden, ebenfalls nicht mehr. Ab Google Chrome 57 werden die meisten StartSSL-Zertifikate nicht mehr als vertrauenswürdig anerkannt, auch wenn diese vor dem 21. Oktober 2016 ausgestellt worden sind.

Quelle: Wikipedia

Die Mechanismen zur Erstellung und Verwendung eines Zertifikats sind allerdings auch für die Zertifikate anderer Zertifizierungsstellen anwendbar, daher lasse ich den Artikel stehen.

Seit einiger Zeit scheint StartSSL außerdem die Kontrolle über seine Domain verloren zu haben, dort steht nur ein Hinweis, man solle von nun an "www.startssla.com" verwenden.

Bitte kaufen Sie kein Code Signing (oder irgendein anderes Zertifikat) von StartSLL, bevor diese sich nicht erneut zertifiziert haben!

Kochrezept: Code Signing Certificate von StartSSL

Letzte Woche schrieb ich einen Artikel über die günstigen Zertifikate der israelischen Firma StartSSL. Eine Rückmeldung lautete wörtlich: „HÄ?“

Zugegeben, das Erstellen von Zertifikaten generell, oder Code Signing im speziellen ist nicht ganz so einfach. Daher folgt hier ein Kochkurs: Wie backe ich ein Code Signing Certificate?

Die Zutaten: Eine Kreditkarte mit $50 Guthaben und eine lauffähige Installation von OpenSSL.

Schritt 1: Anmeldung bei StartSSL und Durchführung der Zertifizierung gemäß „StartSSL™ Verified

Sie benötigen für diesen Vorgang zwei der folgenden drei Dokumente als Scan:

  1. Personalausweis (Vorder- und Rückseite)
  2. Reisepass (Alle Seiten)
  3. Führerschein (Alle Seiten)

Außerdem benötigen Sie eine auf Ihren Namen ausgestellte Telefonrechnung. Die Durchführung der Registrierung auf StartSSL.com überlasse ich dem Leser als Übungsaufgabe.

Schritt 2: Erstellen des Zertifikats

Das Code Signing Certificate besteht aus einen privaten und einem öffentlichen Schlüssel. Es ist unbedingt notwendig, den privaten Schlüssel vollständig und unter allen Umständen geheimzuhalten. Aus diesem Grunde müssen wir das Schlüsselpärchen auf unserem Computer berechnen und den Schlüssel von StartSSL signieren lassen, was quasi einer Unterschrift gleichkommt. Öffnen Sie eine Konsole und wechseln Sie in das OpenSSL-Verzeichnis. Alternativ tut es auch, aus Bequemlichkeitsgründen, ein Webserver mit Shellzugang.

Als Kennwörter sollten Sie grundsätzlich sehr sichere Kennwörter verwenden, ein Mix aus 20 Buchstaben, Zahlen und ein oder zwei Sonderzeichen sollte genügen. Sollte Ihre Datei abhanden kommen, kann sie mißbraucht werden, um schädliche Software unter Ihrem Namen in Umlauf zu bringen.

openssl genrsa -des3 -out codesign.key 4096
openssl req -new -key codesign.key -out codesign.csr

Codesign.key enthält nun das Zertifikat und in codesign.csr findet sich der „Code Signing Request“, also die Aufforderung an die Zertifizierungsbehörde StartSSL, unser Zertifikat zu unterschreiben. Denn: An StartSSL können wir unsere codesign.key ja nicht schicken, denn in dem Moment wäre sie ja zumindest theoretisch bekannt.

Ich gehe nun davon aus, daß Sie aus dem ersten Schritt noch bei StartSSL angemeldet sind und sich in Ihrem Control Panel befinden.

Rufen Sie den Certificate Wizard auf und wählen Sie als Option (Drop-Down Liste): Object Code Signing Certificate (beta). Im nächsten Bild kopieren Sie den Inhalt der Datei „codesign.csr“ in das Eingabefeld. Sie erhalten als Dankeschön eine Ausgabedatei, zum Beispiel „codesign.crt“, die das öffentliche Zertifikat darstellt.

Schritt drei: Kombinieren von öffentlichem und privatem Schlüssel für den Signaturvorgang

In der Konsole:

 

openssl pkcs12 -export -out codesign.pfx -inkey codesign.key -in codesign.crt

Es entsteht eine Datei codesign.pfx, die durch das Microsoftsche Tool „signtool.exe“ verwendet werden kann. Für den eigentlichen Signaturvorgang (hier als Beispiel möchten wie eine Datei „software.exe“ signieren.

 

signtool.exe sign /f Codesign.pfx /p <IHRKENNWORT> /tr „http://www.startssl.com/timestamp“ software.exe

Durch die Verwendung von /tr „http://www.startssl.com/timestamp“ als Parameter wird das jetzige Datum und die Uhrzeit durch StartSSL.com signiert und in die ausführbare Datei geschrieben. Der Sinn liegt darin, daß eine Datei auch dann gültig signiert sein soll, wenn das verwendete Zertifikat abgelaufen ist – solange nur der Signaturvorgang innerhalb des Gültigkeitszeitraums des Zertifikats durchgeführt wurde. Dies funktioniert zur Zeit leider nicht, da StartSSL keine Revocation-Server bereithält und Microsoft daher darauf besteht, die Timestamp-Funktion nicht anzuwenden! Siehe weiter unten im Text!

Worauf Sie nun achten müssen: Die Dateien „codesign.key“ und „codesign.pfx“ sind als unantastbar zu betrachten. Sie enthalten den nicht-öffentlichen, geheimen Schlüssel. Daher ist es wirklich notwendig, sichere Kennwörter zu verwenden.

Hat es geklappt?

Sie können die korrekte Signatur im Dialogfenster „Eigenschaften“ mit einem Rechtsklick auf die signierte Datei überprüfen.

Ich wünsche viel Spaß beim coden!