Durante el desarrollo de un cliente de servicio web Java me encontré con un problema. La autenticación para el servicio web está utilizando un certificado de cliente, un nombre de usuario y una contraseña. El certificado de cliente que recibí de la compañía detrás del servicio web está en .cer
formato. Cuando inspecciono el archivo usando un editor de texto, tiene los siguientes contenidos:
-----BEGIN CERTIFICATE-----
[Some base64 encoded data]
-----END CERTIFICATE-----
Puedo importar este archivo como un certificado en Internet Explorer (¡sin tener que ingresar una contraseña!) Y usarlo para autenticarme con el servicio web.
Pude importar este certificado a un almacén de claves eliminando primero la primera y la última línea, convirtiéndome en líneas nuevas de Unix y ejecutando una decodificación base64. El archivo resultante se puede importar a un almacén de claves (usando el keytool
comando). Cuando enumero las entradas en el almacén de claves, esta entrada es del tipo trustedCertEntry
. Debido a este tipo de entrada (?), No puedo usar este certificado para autenticarme con el servicio web. Estoy empezando a pensar que el certificado proporcionado es un certificado público que se está utilizando para la autenticación ...
Una solución que he encontrado es importar el certificado en IE y exportarlo como un .pfx
archivo. Este archivo puede cargarse como un almacén de claves y puede usarse para autenticarse con el servicio web. Sin embargo, no puedo esperar que mis clientes realicen estos pasos cada vez que reciben un nuevo certificado. Entonces me gustaría cargar el .cer
archivo directamente en Java. ¿Alguna idea?
Información adicional: la compañía detrás del servicio web me dijo que el certificado debería solicitarse (usando IE y el sitio web) desde la PC y el usuario que importaría el certificado más tarde.