Zusammenfassung: Wie installiere ich ein neues Stammzertifikat mit Java-Code in Java?Wie importiere ich ein neues Java-CA-Zertifikat, ohne das Befehlszeilenprogramm keytool zu verwenden?
Wir haben eine Desktop-Anwendung, die auf verschiedene Web-Services zugreift. Kürzlich hat einer von ihnen sein SSL-Zertifikat auf einen von Trustwave signierten umgestellt. Während die Trust SSL-Zertifikate durch regelmäßigen Internet-Browser akzeptiert werden, Java scheint nicht mit der Voraussetzung Root-Zertifikaten zu kommen, und wir verloren den Zugang zu dem angegebenen Web-Service mit der folgenden Fehlermeldung:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
haben wir ein temporären raten Sie dazu, den Anbieter davon zu überzeugen, zu Verisign zurückzukehren, aber wenn er zurückwechselt, müssen wir bereit sein. Also brauche ich unsere Desktop-Software, um das Trustwave-Root-Zertifikat nach Bedarf automatisch zu installieren. Unsere Kunden sind nicht technisch versiert genug, um den keytool-Befehl zu verwenden, und ich würde sie lieber nicht skripten, da dies für mich eine zerbrechliche Lösung ist (separate Implementierungen für Mac und PC, der Kampf gegen Vista-Ausführungsbeschränkungen, Probleme beim Finden der richtigen JRE) , etc).
Ich stelle mir vor, das Keytool verwendet intern Java. Welchen Befehl könnte ich innerhalb von Java verwenden, um die Funktionalität von keytool zu replizieren und das Root-Zertifikat programmatisch zu installieren?
Das könnte für uns arbeiten. Der Link schlägt eine Möglichkeit vor, die Verifizierung vollständig zu deaktivieren, was nicht genau das ist, was wir wollen, aber vielleicht könnte ich den normalen TrustManager untergehen, um einen zu erstellen, der alle regulären Stammzertifikate plus eins ausprobiert. Danke, das sieht vielversprechend aus. –