Webstart und Certificate Chains

05.07.2015

Ich habe nach den ersten theoretischen Vorüberlegungen begonnen, eine ernstgemeinte CA aufzusetzen. Bei den diversen Tests, die ich durchführte, um die korrekte Funktionsweise zu testen, stieß ich auf eine Schwierigkeit, die ich bisher noch nicht umschiffen konnte.

Die PKI

Als PKI setzte ich eine Root-CA auf, die vier untergeordnete CAs aufwies: eine zum Ausstellen von TLS (Server-) Zertifikaten, eine zum Ausstellen von EMail-Zertifikaten und eine zum Ausstellen von Code-Signing-Zertifikaten. Dazu kam noch eine intermediary CA, die ihrerseits weitere CAs erstellen konnte.

Damit war dann zunächst jedes Szenario abgedeckt, das ich mir im Vorhinein überlegt hatte: ich konnte TLS- EMail- und Code-Signing-Zertifikate ausstellen und auf einfache Art und Weise neue CAs aufsetzen, mit denen ich weitere Tests durchführen konnte.

Die Tests

Ich erstellte verschiedene EMail-Zertifikate, sicherte einen Server per TLS ab und stellte ein Code-Signing-Zertifikat aus. Mit diesem signierte ich sowohl die Plugins für dWb+ und sQLshell, als auch die Webstart-Versionen diverser Anwendungen.

Das Problem

Alle Tests funktionierten wie erwartet - bis auf die Webstart-Anwendungen: Beim Versuch, diese zu starten, erhielt ich die Meldung:
Running this application may be a security risk
Die mögliche Ursache stand gleich direkt darunter:
Unable to ensure the certificate used to identify this application has not been revoked
Als ich die Java-Einstellungen so änderte, dass für den Revocationtest nur das unmittelbare CA-Zertifikat und nicht die gesamte Kette benutzt wird, konnte die Anwendung plötzlich problemlos starten - das heißt, das der Revocationstatus von Zertifikaten, die durch die Code-Signing-CA ausgestellt wurden, sehr wohl von Webstart geprüft werden konnte. Lediglich der Revocationstatus von Zertifikaten, die von der Root-CA ausgestelllt wurden, konnte durch Webstart nicht bestimmt werden.

Auch nach Aktivieren aller Log. und Trace-ausgaben konnte ich keine Ursache dafür feststellen: Lediglich eine lapidare Meldung taucht dann dort auf:

security: Revocation Status Unknown
Vielen Dank, liebe Entwickler von Webstart!

Als eine mögliche Idee, den Grund dafür einzukreisen, fiel mir das Schreiben einer eigenen Java-Anwendung ein: Diese sollte anhand der Angaben über CRL-Quelle und Ort des Zertifikates des Ausstellers ausgehend von einem Endnutzer-Zertifikat die gesamte Kette bis zur Root-CA emporhangeln und die Gültigkeit jedes Zertifikats entlang des Wegs anhand der CRL-Informationen im jeweiligen CA-Zertifikat testen. Ergebnis: Es funktioniert!

Damit ist für mich klar, dass der Fehler irgendwo in Webstart liegt: entweder in der Implementierung oder der fehlerhaften oder lückenhaften Dokumentation, wenn es um Code signing für Webstart-Anwendungen geht.

Artikel, die hierher verlinken

TSA mit openssl im Eigenbau

06.03.2016

Ich habe nach den ersten theoretischen Vorüberlegungen begonnen, eine ernstgemeinte CA aufzusetzen. Beim Konfigurieren dieser Infrastruktur zum Anbieten der Dienstleistungen einer Timestamp Authority (TSA) stieß ich auf Schwierigkeiten, für deren Lösung ich erst in meinen Weihnachtsferien einen geeigneten Ansatzpunkt fand.

Alle Artikel rss Wochenübersicht Monatsübersicht Codeberg Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Multi-User-WebDAV, Docker, GitHub

    17.11.2019

    Nachdem ich mich in letzter Zeit verstärkt mit Docker und dem zugehörigen Ökosystem beschäftige, habe ich begonnen, verschiedenste Dienste in Containern zu testen um zu sehen, ob in manchen Fällen LXC oder KVM nicht doch die bessere Wahl wäre...

    Weiterlesen...

Neueste Artikel

  • Migration der Webseite und aller OpenSource Projekte

    In eigener Sache...

    Weiterlesen...
  • AutoHideToolbar für Java Swing

    Ich habe eine neue Java Swing Komponente erstellt: Es handelt sich um einen Wrapper für von JToolBar abgeleitete Klassen, die die Werkzeugleiste minimieren und sie nur dann einblenden, wenn der Mauszeiger über ihnen schwebt.

    Weiterlesen...
  • Integration von EBMap4D in die sQLshell

    Ich habe bereits in einem früheren Artikel über meine ersten Erfolge berichtet, der sQLshell auf Basis des bestehenden Codes aus dem Projekt EBMap4D eine bessere Integration für Geo-Daten zu spendieren und entsprechende Abfragen, bzw. deren Ergebnisse auf einer Kartenansicht zu visualisieren.

    Weiterlesen...

Manche nennen es Blog, manche Web-Seite - ich schreibe hier hin und wieder über meine Erlebnisse, Rückschläge und Erleuchtungen bei meinen Hobbies.

Wer daran teilhaben und eventuell sogar davon profitieren möchte, muss damit leben, daß ich hin und wieder kleine Ausflüge in Bereiche mache, die nichts mit IT, Administration oder Softwareentwicklung zu tun haben.

Ich wünsche allen Lesern viel Spaß und hin und wieder einen kleinen AHA!-Effekt...

PS: Meine öffentlichen Codeberg-Repositories findet man hier.