Je développe une application mobile qui s'exécutera sur un PDA Windows Mobile. L'application est écrite en Java et pour l'exécuter, nous utilisons la JVM J9 d'IBM. L'application communique avec un serveur Apache Tomcat via HTTP et nous essayons de le configurer maintenant pour utiliser SSL.SSL HandShakeException: No_Certificate. Utilisation de J9 JVM et Apache Tomcat d'IBM
J'ai généré des clés publiques/privées pour le client et le serveur, j'ai exporté leurs certificats autosignés et je les ai importés dans les magasins de clés respectifs. Au début, j'ai essayé de le faire fonctionner en utilisant seulement l'authentification côté serveur et cela a réussi. Mais j'essaie maintenant d'obtenir une authentification mutuelle en définissant clientAuth = "true" dans le fichier server.xml du répertoire apache conf.
J'ai activé la journalisation SSL sur le serveur et lorsque le client se connecte le serveur signale une exception SSLProtocolException: handshake: no_certificate. Les journaux du client montrent aussi une exception:
javax.net.ssl.SSLHandshakeException: unexpected_message
at com.ibm.j9.jsse.SSLSocketImpl.completeHandshake(Unknown Source)
at com.ibm.j9.jsse.SSLSocketImpl.startHandshake(Unknown Source)
at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.openSocket(Unknown Source)
at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.connect(Unknown Source)
at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.sendRequest(Unknown Source)
at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.doRequest(Unknown Source)
at com.ibm.oti.net.www.protocol.https.HttpsURLConnection.getInputStream(Unknown Source)
Le keystore client et truststore est configuré en définissant les propriétés système suivantes:
javax.net.ssl.trustStore
javax.net.ssl.trustStorePassword
javax.net.ssl.keyStore
javax.net.ssl.keyStorePassword
Est-ce que quelqu'un a des idées comment je peux configurer l'authentification du client sur la J9 JVM?
Les chemins sont bien. Le fichier de clés certifiées n'a rien à voir avec cela, il contient le certificat de serveur. Le keystore est plus susceptible d'être défectueux, mais je ne pense pas que le modifier en keystoreFile et keystorePass ait un sens. Les propriétés du système sont bien documentées en tant que keyStore et keyStorePassword. – DaveJohnston
vous avez raison, ces paramètres vont dans les propriétés du serveur. avez-vous essayé d'utiliser un navigateur Web et d'installer le certificat, vérifiez si vous pouvez établir le canal ssl? Je suis sûr que le client ne fournit pas le bon certificat. Utilisez-vous PKCS12? – juanp