Bonjour à tous,

Je dois mettre en place de l'authentification client SSL à partir d'un serveur de dev vers un Tomcat installé en local.

Avant de commencer les choses sérieuses, je me suis fait avec keytool iui et openssl, un CA, des certificats serveur et client, et après quelques recherches pour comprendre comment ça marche, tout se passe bien : firefox me demande de choisir un certificat pour m'authentifier et la page s'affiche.

J'ai voulu faire pareil avec le serveur de dev. J'ai donc installé son AC racine dans le truststore de Tomcat, et importé un p12 simulant mon serveur de dev (à partir de sa clé et de son certif) dans firefox afin de tester plus facilement. Je me suis rendu compte qu'il fallait reconstituer la chaîne de certification dans firefox afin qu'il me propose le certificat client pour accéder à ma page. Ceci étant fait, bien que je puisse choisir le bon certificat, j'obtiens ensuite l'erreur ssl_error_certificate_unknown_alert. En essayant un appel réel depuis le serveur, le message est sensiblement le même.

La seule chose différenciant les 2 cas est que dans le second cas, l'AC racine signe un certificat intermédiare qui signe le certificat client, alors qu'il n'y a pas d'intermédiaire dans le premier cas.

J'ai l'impression qu'à partir de l'AC root présent dans le truststore, Tomcat n'arrive pas à descendre jusqu'au certificat client, alors que firefox y arrive.

Le problème peut-il venir de là ? J'ai essayé d'assembler les 3 certificats (root, intermediaire et client) dans un fichier (copier/coller, ce n'est peut être pas la bonne méthode ?) afin de faire une chaîne de certification et de l'importer dans le keystore puis dans le truststore, dans les 2 cas ca ne semble pas possible.

Bizarrement, en important le certificat intermédiaire dans le keystore avec keytool iui, le lien vers l'AC root se fait (tix vert dans la colonne "Trusted CA ?"). En important le certificat client ensuite, ce lien n'est pas fait.

Enfin, en exécutant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
keytool -princert -file
sur le certificat client, le certificat s'affiche mais une erreur se glisse à la fin :
Unparseable SubjectAlternativeName extension due to
java.io.IOException: URI name must include scheme: xxxxxxx


J'avoue être à court d'idées pour réussir l'authentification.

Merci d'avance pour toute idée