Au cours du développement d'un client de service Web Java, j'ai rencontré un problème. L'authentification pour le webservice 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 en format .cer
format. Lorsque j'inspecte le fichier à l'aide d'un éditeur de texte, il présente 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 à entrer un mot de passe !) et l'utiliser pour m'authentifier auprès du webservice.
J'ai pu importer ce certificat dans un keystore 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 keystore (à l'aide de la commande keytool
). Lorsque je liste les entrées dans le keystore, cette entrée est du type trustedCertEntry
. A cause de ce type d'entrée ( ?) je ne peux pas utiliser ce certificat pour m'authentifier avec le webservice. 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 la forme d'un fichier de type .pfx
fichier. Ce fichier peut être chargé en tant que keystore et peut être utilisé pour s'authentifier avec le webservice. Cependant, je ne peux pas demander à mes clients d'effectuer ces étapes chaque fois qu'ils reçoivent un nouveau certificat. J'aimerais donc charger le fichier .cer
directement dans Java. Des idées ?
Info supplémentaire : la société derrière le webservice m'a dit que le certificat devrait être demandé (en utilisant IE et le site web) à partir du PC et de l'utilisateur qui importera le certificat plus tard.