Maison > Java > javaDidacticiel > Pourquoi mon client Java n'envoie-t-il pas son certificat lors de la négociation SSL ?

Pourquoi mon client Java n'envoie-t-il pas son certificat lors de la négociation SSL ?

Patricia Arquette
Libérer: 2024-12-02 07:34:10
original
669 Les gens l'ont consulté

Why Doesn't My Java Client Send Its Certificate During SSL Handshake?

Pourquoi mon client Java ne parvient-il pas à transmettre son certificat lors de la prise de contact SSL ?

Dans une tentative de connexion à un service Web sécurisé à l'aide de Java , les utilisateurs rencontrent fréquemment des échecs de négociation. Malgré une configuration correcte du keystore et du truststore, le problème sous-jacent provient souvent de la réticence de Java à transmettre le certificat client lors de la négociation.

Comprendre le problème :

  1. Le serveur attend un certificat client signé par RootCA de confiance.
  2. Java recherche dans le magasin de clés et trouve uniquement le certificat client signé par SubCA, qui est lui-même approuvé par RootCA.
  3. Java ne regarde pas au-delà du keystore, excluant le truststore de sa recherche.
  4. En conséquence, Java prétend ne pas avoir de fichier approprié. certificat et échoue à la poignée de main.

Proposé Solutions :

1. Adresser la chaîne de certificats brisée :

Vérifiez que le certificat SubCA a été correctement importé dans le magasin de clés, sans rompre la chaîne de certificats. Cela peut être fait en utilisant keytool -v -list -keystore store.jks. Si un seul certificat est visible par entrée d'alias, la chaîne est probablement rompue.

Importer la chaîne de certificats dans le Keystore :

Pour résoudre le problème, importez le certificat client et toute sa chaîne de certificats dans l'alias du magasin de clés contenant la clé privée.

2. Problème de configuration côté serveur :

Bien que la demande du serveur pour un certificat signé par SubCA soit raisonnable, le strict respect de la demande par Java peut être inutilement restrictif. Il a été observé que les navigateurs comme Chrome et OpenSSL sont plus flexibles à cet égard.

Solution de contournement :

Pour contourner le problème, une approche alternative peut être utilisée :

  1. Exportez le certificat client du magasin de clés à l'aide de keytool -exportcert -rfc -file clientcert.pem -keystore store.jks -alias monalias. Cela crée un fichier PEM.
  2. Combinez le certificat client et le certificat CA intermédiaire (et éventuellement le certificat CA racine) dans un seul fichier bundle.pem.
  3. Importez à nouveau le paquet de certificats dans le magasin de clés. alias contenant la clé privée en utilisant keytool -importcert -keystore store.jks -alias myalias -file bundle.pem.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal