Ho un file pkcs12. Devo usare questo per connettermi a una pagina web usando il protocollo https. Mi sono imbattuto in un po 'di codice in cui, al fine di connettersi ad una pagina web sicuro ho bisogno di impostare le seguenti proprietà di sistema:Come connettersi a un sito Web sicuro utilizzando SSL in Java con un file pkcs12?
System.setProperty("javax.net.ssl.trustStore", "myTrustStore");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
System.setProperty("javax.net.ssl.keyStoreType", "pkcs12");
System.setProperty("javax.net.ssl.keyStore", "new_cert.p12");
System.setProperty("javax.net.ssl.keyStorePassword", "newpass");
Ho il file P12 (PKCS12). Tutto ciò di cui ho bisogno è un file truststore.
ho estratto i certificati utilizzando:
openssl.exe pkcs12 -in c:/mykey.p12 -out c:/cert.txt -nokeys -clcerts
ora convertito il file cert PEM a der
openssl.exe x509 -in c:/cert.txt -outform DER -out c:/CAcert.der
Ora aggiunta del file der ad un archivio chiavi
keytool -import -file C:/Cacert.der -keystore mytruststore
Ora ho il truststore, ma quando lo uso, ottengo il seguente errore
Exception in thread "main" java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
Aggiornamento: Dopo aver rimosso alcune proprietà e l'impostazione solo il "trustStore", "trustStorePassword" e la proprietà "trustStoreType", ho ricevuto la seguente eccezione
java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
prega di aiuto.
Se potessi pubblicare più tracce dello stack (informazioni dai frame dello stack, non solo il messaggio di eccezione), le darò un'occhiata. – erickson
Un'altra cosa da controllare è che la posizione del tuo negozio di fiducia sia specificata correttamente; se javax.net.ssl.trustStore è specificato ma non esiste, viene creato immediatamente un trust store vuoto. Il tuo nuovo messaggio di errore fa sembrare che questo potrebbe accadere. – erickson