Maison >Java >javaDidacticiel >Pourquoi ma prise de contact Java SSL échoue-t-elle lorsque le serveur demande un certificat client signé par une autre autorité de certification ?

Pourquoi ma prise de contact Java SSL échoue-t-elle lorsque le serveur demande un certificat client signé par une autre autorité de certification ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-29 05:36:13557parcourir

Why Does My Java SSL Handshake Fail When the Server Requests a Client Certificate Signed by a Different CA?

Omission du certificat client dans la prise de contact SSL Java

Le comportement de Java lors des prises de contact SSL peut parfois entraîner l'omission du certificat client, conduisant à une prise de contact échecs. Ce problème survient lorsque le serveur demande un certificat client signé par une certaine autorité de certification (dans ce cas, « RootCA ») et que Java ne trouve qu'un certificat client signé par une autorité de certification subordonnée (« SubCA ») dans le Keystore.

Considérations sur la configuration du Keystore :

  1. Rupture de la chaîne de certificats : Il est possible que l'importation du certificat « SubCA » dans le Keystore peut avoir perturbé la chaîne de certificats, conduisant le KeyManager à reconnaître uniquement le certificat client.
  2. Association de certificat : Le certificat « SubCA » doit être associé à l'alias qui contient le certificat client et sa clé privée dans le Keystore. Cette association peut être vérifiée à l'aide de keytool -v -list -keystore store.jks.

Considérations sur la configuration du serveur :

  1. Autorité de certification Différence : Idéalement, le serveur devrait demander un certificat client signé par la "SubCA", car il s'agit de l'autorité de confiance fournie au client. Cependant, le strict respect par Java de la vérification de la chaîne de certificats peut entraîner des échecs de négociation dans ce scénario.

Solution de contournement :

Pour corriger ce problème, le certificat client et sa chaîne de certificats (y compris le certificat « SubCA ») doivent être combinées en un seul fichier (par exemple, bundle.pem). Ce fichier PEM groupé peut ensuite être importé dans l'alias Keystore qui contient la clé privée du client à l'aide de keytool -importcert -keystore store.jks -alias myalias -file bundle.pem. En faisant cela, Java reconnaîtra la chaîne complète de certificats et enverra le certificat approprié lors de la négociation SSL.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn