Wie konvertiert Zertifikat Vertrauen aus .jks .pem?

Ich habe eine Java-SSL-server, zu dem ich will, dass meine Java-SSL-client und C++, SSL client verbinden zu können. Der Java-client verbindet sich ohne Probleme. Nun möchte ich meine C++, SSL client verbinden zu können. Also für diesen Zweck ,dachte ich mir, dass ich Sie exportieren möchten, serverpub.jks ein .pem-Datei so, dass meine C++ - client laden kann, es in seine ssl-Kontext. Aber das wird nicht funktionieren.

Unten finden Sie eine Beschreibung, wie ich die jks-Schlüsselspeicher für den Java-client und-server, und dann, wie ich versuche zu exportieren, die serverpub.jks .pem-Datei.

Schritt 1: Generieren Sie den Client-und Server-Keystores

c:\keytool -genkeypair -alias myserverkeys -keyalg RSA -dname "CN=my Server,OU=kl2217,O=kl2217org,L=NYC,ST=NY,C=US" -keypass password -keystore server.jks -storepass password
c:\keytool -genkeypair -alias myclientkeys -keyalg RSA -dname "CN=my Client,OU=kl2217,O=kl2217org,L=NYC,ST=NY,C=US" -keypass password -keystore myclient.jks -storepass password

Schritt 2: Exportieren Sie das öffentliche Zertifikat des Servers und erstellen Sie ein separates keystore

c:\keytool -exportcert -alias myserverkeys -file serverpub.cer -keystore myserver.jks -storepass spacex
c:\keytool -importcert -keystore serverpub.jks -alias serverpub -file serverpub.cer -storepass password

Schritt 3: Exportieren des client-öffentliche Zertifikat und erstellen Sie einen separaten Schlüsselspeicher

c:\keytool -exportcert -alias myclientkeys -file clientpub.cer -keystore myclient.jks -storepass spacey
c:\keytool -importcert -keystore clientpub.jks -alias clientpub -file clientpub.cer -storepass password

So weit So gut.

Nun, hier ist, wo ich auf Probleme stoßen.

Schritt 4: Konvertieren serverpub.jks .pem-format

c:\keytool -importkeystore -srckeystore serverpub.jks -destkeystore serverpub.p12 -srcstoretype jks -deststoretype pkcs12

Und die Antwort

Enter destination keystore password:
Re-enter new password:
Enter source keystore password:
Problem importing entry for alias serverpub: java.security.KeyStoreException: TrustedCertEntry not supported.
Entry for alias serverpub not imported.
Do you want to quit the import process? [no]:

Was bedeutet das? Was mache ich falsch?

Schritt 5: Hätte

c:\openssl pkcs12 -in serverpub.p12 -out serverpub.pem

Aber wie Sie sehen können ich konnte es nicht so weit kommen.

Ich würde wirklich zu schätzen einige helfen, zu verstehen, wie dieses Recht zu.

Dank

Ich glaube, Sie brauchen, um die Konzepte gerade erste. serverpub.jks enthält nur ein Zertifikat; es hat keinen privaten Schlüssel. Die PKCS12-format, die Sie versuchen zu exportieren, die in erwartet Sie ein Schlüsselpaar, also einen privaten Schlüssel und einen öffentlichen Schlüssel.
Ah ich sehe. So ist es eine Möglichkeit zum exportieren einfach das cert .pem? Wie ich es verstehe, ist alles was ich brauche laden in C++, das Vertrauen des Kunden zu speichern, Nein?
Ich bin mir nicht sicher, was Sie zu tun versuchen. Sind Sie versuchen zu tun-client-Authentifizierung? Wenn ja, dann muss der client seinen eigenen privaten Schlüssel.
So wie die Java-client und-server gegenseitig authentifizieren, ich möchte die gleiche Sache, die zwischen den C++ - client und Java-server.
so -genkeypair die client-Schlüssel in seinen eigenen keystore-und export dieser keystore zu einer PKCS12-Datei. Dann ist der Kunde auch Vertrauen muss, um den öffentlichen Schlüssel des Servers, so dass muss in das Vertrauen der Kunden zu speichern. Der server muss darauf Vertrauen, dass der client den öffentlichen Schlüssel, so dass muss in die server-truststore.

InformationsquelleAutor driftwood | 2014-06-21

Schreibe einen Kommentar