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
Patricia Arquetteoriginal
2024-12-02 07:34:10679parcourir

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:
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