Die Idee dazu kam von der Anleitung der Humboldt-Uni.
putty
und Kommandozeile.
Die meisten Tutorials im WWW verwenden openssl
.
Wahrscheinlich geht es damit leichter.
Das Programm fragt einige zu setzende Bezeichner ab. Dabei habe ich, in Absprache mit dem URZ, folgendes eingegeben:keytool -genkey -keyalg RSA -alias heha-cs -keySize 2048
CN=PN: Henrik Haftmann (CodeSigning) OU=IWP O=Technische Universitaet Chemnitz L=Chemnitz ST=Sachsen C=DEAußerdem möchte es ein Passwort für die
~/.keystore
-Datei haben.
Da diese immerhin einen privaten (geheimen) SchlĂĽssel enthalten wird,
habe ich dafĂĽr ein paar Sonderzeichen spendiert,
obwohl die Datei im einigermaĂźen geschĂĽtzten AFS-Bereich liegt.
Mit dem alias gibt man dem SchlĂĽssel bzw. dem kĂĽnftigen SchlĂĽsselpaar einen Namen.
Die entstehende Dateikeytool -certreq -file heha-cs.csr -alias heha-cs
heha-cs.csr
sieht etwa so aus:
-----BEGIN NEW CERTIFICATE REQUEST----- kryptischer Text -----END NEW CERTIFICATE REQUEST-----
heha-cs.csr
muss man nun zur Universität bringen,
und zwar durch den Besuch dieser
Webseite.
Als „Zertifikatsprofil“ (Einsatzzweck) legt man „User“ fest.
Die anderen Angaben füllt man wahrheitsgemäß aus, und das angegebene Passwort zum Löschen des Zertifikats schreibt man sich am besten irgendwo auf. (Ich benutze für das mit der Zeit anfallende Passwort-Sammelsurium eine passwortgeschützte ZIP-Datei.)
Dann druckt man den Antrag (PDF-Datei, 1 A4-Seite) aus, fĂĽllt den aus und marschiert damit und dem Personalausweis zum Nutzerservice.
Der Mitarbeiter dort macht einen Gesichts- und Unterschriftenvergleich, und dann geht der Zettel per Hauspost ans URZ.
cert-??????.pem
-Datei als Anhang.
Sehr geehrte Nutzerin, sehr geehrter Nutzer,
die Bearbeitung Ihres Zertifizierungsantrags ist nun abgeschlossen.
Ihr Zertifikat mit der Seriennummer XXXXXXXXXXXXXXXX ist auf den Namen
CN=PN: Henrik Haftmann (CodeSigning),OU=IWP,O=Technische Universitaet Chemnitz,L=Chemnitz,ST=Sachsen,C=DE
erstellt worden.
Sie benötigen die Seriennummer, um Ihr Zertifikat gegebenenfalls sperren zu können.
Um Ihr Zertifikat nutzen zu können, müssen Sie alle folgenden Zertifikate in Ihre Anwendung importieren.
1. Für die CA-Zertifikate wählen Sie bitte die Seite
https://pki.pca.dfn.de:443/tu-chemnitz-ca/cgi-bin/pub/pki?cmd=getStaticPage;name=index;id=2
und folgen den Anweisungen.
2. Ihr eigenes Zertifikat finden Sie im Anhang dieser Mail.
Mit freundlichen GrĂĽĂźen
Ihr PKI-Team der Technische Universitaet Chemnitz
Bevor man das angehängte Zertifikat in die ~/.keystore
-Datei importieren kann,
muss man die Zertifikatkette der Uni installieren. Das ging so:
Man klickt auf den Link in der E-Mail, klickt auf „Zertifikatkette anzeigen“
und speichert diese.
Heraus kommt eine Datei mit 3 Sektionen, die so aussehen:
-----BEGIN CERTIFICATE----- kryptischer Text -----END CERTIFICATE------Diese Datei zerstĂĽckelt man mit einem beliebigen Texteditor in 3 Teile, benannt
c1
, c2
und c3
.
Dann importiert man diese folgendermaĂźen:
Dabei kann es passieren, dass eine Warnung erscheint, weil eins der Zertifikate (bei mir war'skeytool -import -file c3 -alias c3 -trustcacerts keytool -import -file c2 -alias c2 -trustcacerts keytool -import -file c1 -alias c1 -trustcacerts
c3
) bereits
global installiert ist. Dann braucht man es nicht zu laden.
Jetzt die Datei aus dem Attachment.
Ihr Inhalt entspricht dem der Dateien c1
bis c3
.
Wichtig beim Import ist der gleiche Alias!
Nun kann man sich mitkeytool -import -file cert-??????.pem -alias heha-cs -trustcacerts
die nun fertigekeytool -list
~/.keystore
-Datei angucken.
Die Datei selbst ist eine kryptische Binärdatei.
Man kann nun sofort mittels jarsigner
Java-Archive signieren.
~/.keystore
-Datei, und nur dort.
Irgendwie muss dieser auch nach Windows exportiert werden.
Das kann keytool
nicht erledigen,
aber dafĂĽr tun es zwei kleine Java-Programme,
ExportPriv.java
und Base64Coder.java
,
und ein Text-Editor.
Dabei kommen die Tipps von dieser Webseite.
Auch die Java-Progrämmchen kann man sich da runterladen.
Die Kommandozeilen sind wie folgt:
Dummerweise spucktjavac ExportPriv.java Base64Coder.java java ExportPriv ~/.keystore heha-cs <password> > heha-cs.p8
ExportPriv
alle Base64-Zeichen in einer Zeile aus.
Damit der nächste Schritt diese Daten schluckt, habe ich diese mit einem Texteditor
auf 64 Zeichen pro Zeile umgebrochen.
In der Windows-Welt werden pkcs12
-Dateien erwartet.
Das sind Binärdateien für den privaten Schlüssel.
Zum Umwandeln muss man starten:
openssl pkcs8 -inform PEM -nocrypt -in heha-cs.p8 -out heha-cs.p12
Diese Datei kann man unter Windows doppelklicken. Dabei wird die Datei im Windows-Zertifikatspeicher unter „Eigene Zertifikate“ installiert. Jener Zertifikatspeicher wird automatisch von Internet Explorer, Outlook (Express?) und signtool verwendet, nicht jedoch von Mozilla Firefox und Thunderbird.
Irgendwie sieht das Zertifikat unter Windows komisch aus:
Dazu später mehr.
Da das Zertifikat auch das Unterschreiben von E-Mail zulässt, ich aber dafür ein anderes Zertifikat von der Uni habe, habe ich im Zertifikat-Manager die Verwendung „Sichere E-Mail“ ausgeschaltet.
Im ĂĽbrigen gibt es unter Windows zwei Zertifikat-Manager, die auf den gleichen Speicher zugreifen:
certmgr.msc
als Snap-In für die Computerverwaltung (Management Console), standardmäßig installiert
certmgr.exe
als Teil des SDK (oder DDK?) bei der Software-Entwicklung.
jarsigner
⚓Und trotzdem wird dann noch gemeckert: Bild 1 Bild 2 Bild 3. Laut Java-Dokumentation ist ein blaues Schutzschild OK. Trotzdem eine eher verwirrende Warnung, die keine ist. Sondern ein Hinweis, dass alles absolut korrekt ist. Da sollte besser nichts hochkommen, ist ja nur Geschwafel.echo "Permissions: sandbox" > t.mf jar cfmv t.jar t.mf t.class … jarsigner t.jar heha-cs -tsa https://timestamp.geotrust.com/tsa
Hinweis: .class-Dateien lassen sich nicht signieren. Einfache Java-Applets muss man trotzdem einpacken und die HTML-Zeile mit <embed … erweitern um archive=jarname. Im Prinzip das Ende von kleinen Spielereien, Riesenhürden für Anfänger, der Sargdeckel für selbstgemachte Java-Applets. Hier das Beispiel.
signtool signwizard
âš“Dann startet ein Dialog, und man kann die Datei mit ein paar Mausklicks mit dem Zertifikat versehen lassen.signtool signwizard
signtool
entnimmt das Zertifikat automatisch aus dem Windows-Zertifikatspeicher,
da es nur eines fĂĽr Kodesignatur geeignetes findet (es setzt dazu ein Filter).
Heraus kommt „Authenticode“.
Bemerkenswerterweise wird nicht nach einem Passwort gefragt! Nur ein kleiner Dialog fordert zum Bestätigen des Signiervorgangs auf. Das war die Einstellung „Hohe Sicherheit“ beim Importieren des geheimen Schlüssels gewesen. Man kann nachträglich noch den Passwortschutz aktivieren.
Die Kommandozeilenoption signwizard
steht ĂĽbrigens erst bei einem
relativ neuen SDK,
nicht jedoch bei einem DDK zur VerfĂĽgung!
Offenbar geht Microsoft davon aus, dass Treiberentwickler alles per makefile
machen, auch das Signieren.
Startet man hingegen die signierte Datei, sieht es so aus:
Die Signierung fĂĽhrt also dazu, dass die Datei gar nicht mehr gestartet werden kann!
Microsoft hat m.E. damit den Sinn der Zertifizierung komplett verfehlt.
From: Jan Mönnich (DFN-Cert)Patcht man, wie angegeben, das Wurzelzertifikat „Deutsche Telekom Root CA 2“ und aktiviert den Zweck „Codesignatur“ (interessant, dass das überhaupt geht!), ist die Folge, dass das Zertifikat nun ganz anders aussieht:
To: CA TU Chemnitzja, leider sind die Code-Signing-Zertifikate der DFN-PKI etwas ungeeignet für Signaturen im Bereich "Microsoft". Denn die zugrundeliegende Wurzel Deutsche Telekom Root CA2 wird in Windows-Systemen nicht für den Verwendungszweck "Codesigning" gelistet :( Diesen Zweck kann der Nutzer zwar selbst setzen, dieser wird jedoch bald wieder von Windows Update überschrieben. Die einzige Möglichkeit ist, den Zweck von einem Domaincontroller an alle Rechner im AD zu verteilen. Das geht. Alles andere ist eher schwierig...
Die Moral von der Geschicht': Zertifiziere Deine Windows-Programme nicht!
Wie man nun eine Signatur Ă la Microsoft hinbekommt, dass keine Warnung erscheint, bleibt weiterhin unklar. Wahrscheinlich kostet es Geld, viel Geld.
Keine Warnung erscheint, wenn man das Zertifikat nach „Vertraute Herausgeber“ kopiert. Dies passiert, wenn man im erweiterten Download-Dialog die Auswahl „Immer Software von … ausführen“ trifft.
signtool
kennt 3 verschiedene Verifizierungsmodi:/pa
, frĂĽher mal /pd
)1.2.3.4.5.5.6.7.8
.
Siehe auch OID-Liste.
Oder diese Liste.
/kp
)OID = 1.3.6.1.5.5.7.3.3
)
im Stammzertifikat (Deutsche Telekom Root CA2).