2013-06-13 139 views
8

Ho un certificato pubblico da una CA. Voglio creare una connessione SSL Java usando questo certificato. Mi sono riferito a How can I use different certificates on specific connections? e a Java SSL connection with self-signed certificate without copying complete keystore to client. Da questo capisco che ho bisogno di importare il certificato in un keystore. Tuttavia non ho ricevuto alcun keystore dalla CA. Ho creato un keystore e ho provato ad importare il certificato pubblico. Ma poi ho il seguente errore:Errore durante l'importazione del certificato pubblico in un keystore

errore keytool: java.lang.Exception: Le chiavi pubbliche in risposta e keystore non corrispondono

ho bisogno di un archivio chiavi dalla CA o sto facendo qualcosa di sbagliato?


comando utilizzato per creare l'archivio di chiavi:

keytool -genkey -alias tomcat -keyalg RSA -keystore keystore.jks 

Comando usato per importare il CERT:

keytool -import -v -alias tomcat -file signed-cert.pem -keystore keystore.jks 
+0

Puoi essere un po 'più specifico? Quale comando usi per creare il keystore e come importare il certificato? –

+0

Comando per creare l'archivio di chiavi: keytool -genkey -alias Tomcat -keyalg RSA -keystore keystore.jks comando per importare il CERT: keytool -import -v -alias Tomcat -file firmato-cert.pem -keystore chiavi. jks – DanMatlin

+0

@Zeutheus hai trovato un modo per farlo funzionare? sto affrontando un problema simile e una soluzione al problema di cui sopra sarà di aiuto. – themanwhosoldtheworld

risposta

5

Credo che non si stanno seguendo correttamente certificato signin processo. Checkout Questa discussione https://forums.oracle.com/thread/1533940 per implementare in modo corretto seguendo i passaggi qui sotto:

  1. creare un archivio chiavi keytool -genkey -keyalg RSA -keystore test.keystore -validity 360 (questo genera un archivio di chiavi e una chiave (DC) con alias di "MyKey")

  2. creare una richiesta di firma del certificato (CSR). keytool -certreq -keyalg RSA -file test.csr -keystore test.keystore (questo genera un file di testo CSR)

  3. aveva generato cert firmato:? http://www.instantssl.com/ssl-certificate-support/csr_generation/ssl-certificate-index.html

  4. certificato firmato importato (attenzione per CRLFs se incollare cert firmato dal punto 3) keytool -import -alias newkey -file <signed cert file> -keystore test.keystore (importante che questo ha un alias diverso dal passaggio 1 (che è impostato su "mykey")

  5. Esporta chiave pubblica per l'utilizzo del client keytool -export -alias mykey -file test.publickey -keystore test.keystore

Il sistema Server

  1. creare un truststore keytool -genkey -keyalg RSA -keystore test.truststore -validity 360 (questo genera un archivio di chiavi e una chiave (DC) con alias di "MyKey")

  2. Importa chiave pubblica - per il servizio di test SSL tramite client SOAP keytool -import -file test.publickey -keystore test.truststore

Il problema era lasciare che l'alias nei passaggi 1 e 6 fosse impostato su "mykey". Quando ho cambiato il punto 6 per essere: keytool -genkey -alias testAlias -keyalg RSA -keystore test.truststore -validity 360

è possibile importare utilizzando al punto 7 (anche se ho fatto aggiungere "-alias apublickey" al punto 7). Questo ha funzionato per me.

3

È possibile utilizzare lo strumento keyStore explorer per generare il keystore/certificato e per l'importazione/esportazione del certificato nel keystore.

0

Ho affrontato lo stesso problema durante l'importazione del certificato SSL nel keystore. Nel mio caso il certificato dell'autorità di certificazione principale mancava dalla catena. Ho esportato il certificato di origine in un file e importato manualmente nel keystore.