Durante o desenvolvimento de um cliente de serviço web Java, encontrei um problema. A autenticação para o serviço da web está usando um certificado de cliente, um nome de usuário e uma senha. O certificado de cliente que recebi da empresa por trás do serviço da web está em .cer
formato. Quando inspeciono o arquivo usando um editor de texto, ele possui o seguinte conteúdo:
-----BEGIN CERTIFICATE-----
[Some base64 encoded data]
-----END CERTIFICATE-----
Posso importar esse arquivo como um certificado no Internet Explorer (sem precisar digitar uma senha!) E usá-lo para autenticar no serviço da web.
Consegui importar esse certificado para um keystore, eliminando primeiro a primeira e a última linha, convertendo em novas linhas unix e executando uma decodificação base64. O arquivo resultante pode ser importado para um keystore (usando o keytool
comando). Quando eu listar as entradas no armazenamento de chaves, essa entrada é do tipo trustedCertEntry
. Devido a esse tipo de entrada (?), Não posso usar este certificado para autenticar com o serviço da web. Estou começando a pensar que o certificado fornecido é um certificado público que está sendo usado para autenticação ...
Uma solução alternativa que encontrei é importar o certificado no IE e exportá-lo como um .pfx
arquivo. Este arquivo pode ser carregado como um keystore e pode ser usado para autenticar com o serviço da web. No entanto, não posso esperar que meus clientes executem essas etapas sempre que receberem um novo certificado. Então, eu gostaria de carregar o .cer
arquivo diretamente no Java. Alguma ideia?
Informações adicionais: a empresa responsável pelo serviço da web me disse que o certificado deveria ser solicitado (usando o IE e o site) do PC e do usuário que importaria o certificado posteriormente.