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 Github Repositories Gitlab Repositories Mastodon Über mich home xmpp


Vor 5 Jahren hier im Blog

  • Certstream, InfluxDB, Grafana und Netflix

    16.04.2019

    Nachdem ich vor kurzem über mein erstes Spielen mit dem certstream berichtete, habe ich weitere Experimente gemacht und die Daten zur besseren Auswertung in eine InfluxDB gepackt, um sie mit Grafana untersuchen zu können.

    Weiterlesen...

Neueste Artikel

  • Die sQLshell ist nun cloudnative!

    Die sQLshell hat eine weitere Integration erfahren - obwohl ich eigentlich selber nicht viel dazu tun musste: Es existiert ein Projekt/Produkt namens steampipe, dessen Slogan ist select * from cloud; - Im Prinzip eine Wrapperschicht um diverse (laut Eigenwerbung mehr als 140) (cloud) data sources.

    Weiterlesen...
  • LinkCollections 2024 III

    Nach der letzten losen Zusammenstellung (für mich) interessanter Links aus den Tiefen des Internet von 2024 folgt hier gleich die nächste:

    Weiterlesen...
  • Funktionen mit mehreren Rückgabewerten in Java

    Da ich seit nunmehr einem Jahr bei meinem neeun Arbeitgeber beschäftigt und damit seit ungefähr derselben Zeit für Geld mit Python arbeite, haben sich gewisse Antipathien gegenüber Python vertieft (ich kann mit typlosen Sprachen einfach nicht umgehen) - aber auch einige meiner Gründe, Python zu lieben sind ebenso stärker geworden. Einer davon ist der Fakt, dass eine Methode in Python mehr als einen Wert zurückgeben kann.

    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, muß 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 GitHub-Repositories findet man hier - meine öffentlichen GitLab-Repositories finden sich dagegen hier.