2009-11-28 16 views
7

Si sta verificando un problema con KeyManagerFactory in Sun JRE 1.6. Stiamo utilizzando il codice simile al seguente per caricare e utilizzare un certificato in formato p12:Sun Java KeyManagerFacile e password null

KeyStore keyStore = KeyStore.getInstance(PKCS12); 
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(SUN_X509); 

InputStream certificateFile = getSSLCertificate(); 
String certificatePassword = getSSLCertificatePassword(); 
keyStore.load(certificateFile, certificatePassword); 
keyManagerFactory.init(keyStore, certificatePassword); 

Questo codice funziona correttamente quando esiste la password del certificato. Ma quando la password del certificato è nullo (quindi il certificato non è protetto da una password) otteniamo un errore di divisione per zero dalla riga keyManagerFactory.init.

Qualcuno sa perché questo sta accadendo? Non è possibile utilizzare un certificato senza password? Grazie

+0

che è corretto, è necessario disporre di una password. –

risposta

3

Poiché PKCS12 contiene chiave privata, è sempre necessario disporre di una password. Penso che Sun accidentalmente imponga questo :)

Per tutte le API Keystore, è richiesta la password per il negozio e le chiavi private. Se non vuoi veramente gestire la configurazione o l'interazione dell'utente, usa la password predefinita "changeit" ovunque.

+0

Sun impone intenzionalmente questo, in modo che non dimentichi accidentalmente che è importante. –

Problemi correlati