Sì, hai fatto keytool genkey
nel file server.jks
in modo che il file contenga la tua chiave privata. Quello che devi fare è, innanzitutto, aggiungere il tuo cert (catena) al JKS, quindi convertire il JKS in "PFX". Il p7b di per sé non contiene informazioni sufficienti.
Il .p7b
della CA contiene il certificato per il tuo server e potrebbe contenere altri certificati "a catena" o "intermedi" da cui dipende il certificato del server. Tu dici che questo certificato proviene da una "CA locale"; la CA stessa è delegata da una nota CA "root" come Verisign? In caso contrario, se la CA locale ha la propria radice, quella radice è già stata aggiunta al file cacerts
e / o jssecacerts
nella tua JAVA_HOME/lib/security
? (Se tu o altri utenti del vostro sistema avete interagito con i sistemi che usano questa CA e ha una radice privata, probabilmente avete già bisogno di aggiungerla a un truststore, ma non necessariamente quella standard.)
SE la catena fornita dalla CA utilizza una radice che è già presente in cacerts
distribuita da Java come Verisign o è stata aggiunta a cacerts
sul sistema specifico, eseguire
keytool -keystore server.jks -alias serverkey -import -file whatever.p7b -trustcacerts
La risposta dovrebbe essere "La risposta del certificato è stata installata nel keystore". Se viene visualizzato il messaggio "Il certificato è stato aggiunto al keystore", si tratta di un errore, anche se non lo dice.
Quindi converti in PKCS # 12, che è l'attuale standard Microsoft e altre persone chiamano PFX, come una riga ma interrotta per la pubblicazione:
keytool -importkeystore -srckeystore server.jks -destkeystore server.pfx
-deststoretype pkcs12 -srcalias serverkey
Sul primo passaggio, se la radice (o l'ancora) necessaria non è in cacerts
(ben noto o già aggiunto) ma almeno un certificato CA è nel p7b, keytool
visualizzerà informazioni sul certificato "top-level" e chiedi Install reply anyway?
; rispondi semplicemente "si". Se qualcosa di più complicato è sbagliato, dai dettagli.