2014-12-10 11 views
7

Ich arbeite an einer Anwendung, die einen Webservice von Drittanbietern über HTTPS aufruft. Also muss ich dieses Zertifikat dem Truststore meiner Anwendung hinzufügen. Ich kann 3 Lösungen sehen zu meinem Problem zu beheben:Best Practice, um Drittanbieter-SSL-Zertifikat in Java zu behandeln

  • dieses Zertifikat in den $JAVA_HOME/jre/lib/security/cacerts
  • ein benutzerdefiniertes-Vertrauen erstellen und starten meine JVM mit -Djavax.net.ssl.trustStore= ...
  • programmatisch diesen Trusts laden, wenn meine Anwendung starten

Welche Lösung empfiehlst/entmutige ich zur Verwendung?

Antwort

3

Ich würde die zweite bevorzugen. Weil;

Für die erste; Wenn Sie Ihre Java-Version ändern, müssen Sie zusätzliche Arbeit leisten (Sie müssen diese SSL-Zertifikate erneut zu cacerts hinzufügen).

Für die dritte; wenn Sie ein weiteres SSL-Zertifikat hinzufügen müssen. Sie müssen Ihren Code ändern.

Also, die zweite ist die beste Wahl, weil; Sie müssen Ihren Code nicht ändern, wenn eine neue ssl kommt (Sie fügen sie einfach dem externen trustStore hinzu), und Sie werden nichts tun, wenn Sie Ihre Java-Version aktualisieren.

+0

"Wenn Sie ein anderes SSL-Zertifikat hinzufügen müssen. Sie müssen Ihren Code ändern" Dies ist nicht korrekt, Sie können den Schlüsselspeicher über die Eigenschaftendatei oder einen anderen Mechanismus festlegen. "Die zweite ist die beste Wahl", keine ist richtig, hängt von der Komplexität Ihrer App und vom Anwendungstyp, Standalone, Webapp ... usw. ab, vielleicht benötigen Sie die Verwendung mehrerer Credential-Stores, um einen separaten SSL-Kontext zu verwalten Individuelle Zielinteraktion, die jeden Kontext in einem neuen SSLContext-Objekt einkapselt. – vzamanillo

Verwandte Themen