Authentification mutuelle entre deux services avec le même certificat sur la même machine

Nov 26 2020

J'ai un simple service de démarrage de printemps ( service A) qui a une API REST exposée. Pour ajouter le support https, j'ai utilisé le même certificat qui est émis à un autre service ( service B) présent dans la même boîte. Voici mon fichier application.properties

server.ssl.enabled=true
server.ssl.client-auth=need
server.ssl.key-store=keystore.jks
server.ssl.key-store-password=password
server.ssl.key-store-type=JKS
server.ssl.trust-store-password=password
server.ssl.trust-store=keystore.jks
server.ssl.trust-store-type=JKS

Cela semble fonctionner lorsque la connexion à service Aest établie à partir d'un client qui ne l'est pas service B. J'ai activé l'authentification mutuelle entre les services afin que le certificat client soit validé. Lorsqu'une demande est faite de Bà A, j'obtiens une erreur

javax.net.ssl.SSLHandshakeException: Received fatal alert: bad_certificate
        at sun.security.ssl.Alert.createSSLException(Alert.java:131)
        at sun.security.ssl.Alert.createSSLException(Alert.java:117)

Après avoir activé le débogage SSL, j'ai trouvé que cette erreur était à l'origine de cela

upcoming handshake states: server finished[20]
*** Certificate chain
<Empty>
***
https-jsse-nio-8090-exec-4, fatal error: 42: null cert chain

J'ai vérifié et revérifié que le keystore et le truststore sont correctement définis, mais pas de chance. Y a-t-il un moyen que je puisse faire fonctionner avec le serveur et le client ayant le même certificat? Appréciez tous les conseils sur la façon dont je peux le faire fonctionner (avec le même certificat) car je me débat avec cela depuis une semaine.

Réponses

1 SusanMustafa Nov 26 2020 at 03:36

Votre JKS contient-il toute la chaîne? Si vous regardez à l'intérieur, avez-vous toute la chaîne jusqu'au certificat racine?

L'erreur vous dit qu'il ne trouve pas la chaîne. Votre certificat est probablement auto-signé? ou votre JKS n'a pas la chaîne complète.

Voir une question Stackoverflow similaire: CamelJettyWebSocketServer, erreur fatale: 42: chaîne de cert nulle