Lors du développement d'un client de service Web Java, j'ai rencontré un problème. L'authentification pour le service Web utilise un certificat client, un nom d'utilisateur et un mot de passe. Le certificat client que j'ai reçu de la société derrière le webservice est au .cer
format. Lorsque j'inspecte le fichier à l'aide d'un éditeur de texte, il a le contenu suivant:
-----BEGIN CERTIFICATE-----
[Some base64 encoded data]
-----END CERTIFICATE-----
Je peux importer ce fichier en tant que certificat dans Internet Explorer (sans avoir à saisir de mot de passe!) Et l'utiliser pour m'authentifier auprès du webservice.
J'ai pu importer ce certificat dans un magasin de clés en supprimant d'abord la première et la dernière ligne, en les convertissant en nouvelles lignes Unix et en exécutant un décodage base64. Le fichier résultant peut être importé dans un magasin de clés (à l'aide de la keytool
commande). Lorsque je répertorie les entrées dans le magasin de clés, cette entrée est du type trustedCertEntry
. En raison de ce type d'entrée (?), Je ne peux pas utiliser ce certificat pour m'authentifier auprès du service Web. Je commence à penser que le certificat fourni est un certificat public qui est utilisé pour l'authentification ...
Une solution de contournement que j'ai trouvée consiste à importer le certificat dans IE et à l'exporter sous forme de .pfx
fichier. Ce fichier peut être chargé en tant que fichier de clés et peut être utilisé pour s'authentifier auprès du service Web. Cependant, je ne peux pas m'attendre à ce que mes clients effectuent ces étapes chaque fois qu'ils reçoivent un nouveau certificat. Je voudrais donc charger le .cer
fichier directement dans Java. Des pensées?
Informations supplémentaires: la société derrière le service Web m'a dit que le certificat devrait être demandé (en utilisant IE et le site Web) au PC et à l'utilisateur qui importerait le certificat plus tard.