2012-07-28 8 views
5

Wie importiere ich eine .jks-Datei in den Truststore der Java-Sicherheit? Das ganze Tutorial, das ich sehe, benutzt eine ".crt" -Datei. Ich habe jedoch nur die Datei ".jks", die auch der Schlüsselspeicher ist, den ich mit dem Befehl keytool generiert habe.So importieren Sie ein JKS-Zertifikat in den Java-Truststore

Derzeit bin ich auf this tutorial.

Ich konnte einen Java-Keystore und ein Schlüsselpaar generieren und eine Zertifikatsignierungsanforderung (Certificate Signing Request, CSR) für einen vorhandenen Java-Keystore generieren, die auf dem Lernprogramm basiert. Aber ich kann kein Root- oder Zwischenzertifikat einer Zertifizierungsstelle in einen vorhandenen Java-Keystore importieren und ein signiertes Primärzertifikat in einen vorhandenen Java-Keystore importieren, da es nach einer ".cert" -Datei sucht.

Fehle ich etwas auf den im Tutorial aufgeführten Schritten? Wie kann ich einem Zertifikat vertrauen, wenn die einzige Datei, die ich habe, die Datei ".jks" ist? Und was nutzt die Datei ".csr"?

Bitte beachten Sie, dass ich Windows verwende.

+0

Können Sie angeben, was Sie erreichen möchten? Versuchen Sie, einen Server einzurichten? Oder versuchen Sie, die Client-Authentifizierung zu verwenden? Oder beides? Verwenden Sie ein bestimmtes Framework auf dem Client und/oder dem Server? –

+0

Ich verwende kein Framework. Ich versuche eine Server-Authentifizierung durchzuführen. Ich muss überprüfen, ob der Server, mit dem ich mich verbinde, legitim ist, wenn ich das Zertifikat erhalte. – Arci

+0

Sie haben also einen Client, keinen Server und Sie haben einen '.jks' Keystore, mit dem Sie arbeiten können? Wenn Sie nur der Client sind und keine Client-Authentifizierung verwenden, müssen Sie kein Schlüsselpaar generieren. –

Antwort

10

Die ".jks"ist der Truststore, oder zumindest sollte es sein, wenn Sie es JSSE zuweisen. Sie sollten die Zertifikate von Ihrer Zertifizierungsstelle zu dieser Datei hinzufügen. Die Software sucht dann die Zertifikatskette durch, indem sie die Zertifikate durchläuft. Der private Schlüssel sollte in der (passwortgeschützten) ".jks" Datei verbleiben.

Mit anderen Worten, Sie sollten Zertifikate in die ".jks" Zertifikate exportieren nicht aus exportieren. Möglicherweise müssen Sie die Zertifikate Ihres spezifischen Anbieters separat herunterladen, wenn sie nicht in der Antwort Ihrer Zertifikatsanforderung enthalten sind. Sie können sie wahrscheinlich auch aus Ihrem Lieblingsbrowser exportieren. Normalerweise werden diese im X5.09 DER-Format gespeichert (das mit dem Java keytool kompatibel sein sollte).

Schritte (im allgemeinen):

  1. Generieren eines Schlüsselpaares & cert Anforderung, Speicherung in neue oder bestehende Schlüsselspeicher (.jks)
  2. die Zertifikat-Anforderung senden, um zu unterzeichnen, erhalten Kette, beginnend mit der Zertifikat, das Sie angefordert haben
  3. Zertifikatkette in Schlüsselspeicher mit privatem Schlüssel importieren
  4. Generieren Sie einen neuen oder verwenden Sie einen vorhandenen Schlüsselspeicher für die Partei, die die Überprüfung durchführen muss (mindestens ein oder mehrere Clients bei uns) SSL), und importieren Sie die Zertifikatskette
  5. Vertrauen Sie ein Zertifikat in der Zertifikatskette im oben genannten Schlüsselspeicher, wahrscheinlich das oberste Zertifikat (das "Root" -Zertifikat).
  6. Konfigurieren und testen Sie die Parteien, z. ein Server, der den Schlüsselspeicher mit dem privaten Schlüssel verwendet, und mehrere Clients, die den letzteren Schlüsselspeicher verwenden.
+0

Dies ist die generische Antwort, wenn Sie mehr Details oder Besonderheiten haben möchten, geben Sie dies bitte an, weil ich nicht kann, welche zusätzlichen Informationen ich ohne weitere Einzelheiten liefern kann. –

+0

Vielen Dank für die Klärung! Ich dachte immer, dass das Hinzufügen eines Zertifikats in einem Keystore bedeutet, dass Sie tatsächlich das Zertifikat in JVM hinzufügen, nicht nur eine einzelne Keystore-Datei. Können Sie mir beibringen, wie Sie Java so einstellen, dass es einem selbstsignierten Zertifikat bei der Verwendung von HttpsURLConnection vertraut, ohne es so einzurichten, dass es allen Zertifikaten vertraut? – Arci

+0

Nein, aber ich muss nicht. Normalerweise würden Sie eine Java-Anwendung für die Verwendung eines bestimmten Schlüssels nach Alias ​​konfigurieren. Java wird diesen Alias ​​nur akzeptieren, wenn er die gesamte Zertifikatskette finden kann, aber für selbstsignierte Zertifikate wird diese Kette die Länge 1 haben. Sie müssen nur Zertifikaten * am anderen Endpunkt vertrauen, wo Sie nicht haben Privat Schlüssel. Z.B. Beim Erstellen einer Verbindung versucht ein Client, eine Kette zu einem vertrauenswürdigen Zertifikat zu erstellen, das zu einem bestimmten Zeitpunkt gültig ist. Dazu müssen Sie einen Schlüsselspeicher anhängen oder erstellen und das selbstsignierte Zertifikat importieren und ihm vertrauen. –

Verwandte Themen