2009-11-28 15 views
7

Estamos teniendo un problema con KeyManagerFactory en Sun JRE 1.6. Estamos utilizando un código similar al siguiente para cargar y utilizar un certificado en formato p12:Sun Java KeyManagerFábrica y contraseñas nulas

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); 

Este código funciona correctamente cuando existe la contraseña del certificado. Pero cuando la contraseña del certificado es nula (por lo que el certificado no está protegido por una contraseña) obtenemos un error de división por cero de la línea keyManagerFactory.init.

¿Alguien sabe por qué sucede esto? ¿No es posible usar un certificado sin una contraseña? Gracias

+0

que es correcto, debe tener una contraseña. –

Respuesta

3

Como PKCS12 contiene clave privada, siempre debe tener una contraseña. Creo que Sun aplica esto de forma accidental :)

Para todas las API de Keystore, se requiere una contraseña para la tienda y las claves privadas. Si realmente no desea tratar con la configuración o la interacción del usuario, simplemente use la contraseña predeterminada "changeit" en todas partes.

+0

Sun aplica intencionalmente esto, para que no te olvides accidentalmente de que es importante. –

Cuestiones relacionadas