Je dois me connecter si une négociation SSL échoue alors qu'un client REST tente de se connecter à mon application. L'application est construite à l'aide de Spring Boot et de Java 8 et déployée sur Tomcat 8.
Dans le scénario d'échec de la négociation SSL, étant donné que la connexion TLS est interrompue, il est peut-être nécessaire de consigner l'enregistrement dans la couche Tomcat ou en Java, car Tomcat utilise la JVM sous-jacente pour la validation du certificat SSL dans mon cas.
<Connector port="8443" protocol="org.Apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" scheme="https" secure="true" keystoreFile="keyStore-1.jks" keystorePass="password" keystoreType="jks" truststoreFile="TrustStore.jks" truststorePass="passwrd" truststoreType="jks" clientAuth="want" sslProtocol="TLSv1.2" />
Je suis conscient d'activer la journalisation de niveau de débogage.
-Djavax.net.debug = ssl
Mais cela enregistre beaucoup d’informations et ralentira le processus. Et connectez-vous également au succès des valdiations SSL. Existe-t-il un moyen d'activer les cas d'échec seuls avec des journaux minimum au niveau Java ou Tomcat?
Je ne cherche PAS cela du point de vue du débogage, car les journaux de débogage SSL sont très utiles pour cela. Cette exigence concerne davantage la journalisation et l’audit et l’activation des journaux de débogage n’est pas une option envisageable.Mécanisme qui enregistre uniquement les erreurs qui se produisent SSL et non toutes les données hexadécimales/cert.
Malheureusement, ce n'est probablement pas possible. Et il n’est pas lié à Tomcat. La journalisation de SSL ne fait pas partie de la journalisation standard dans votre application. Vous pouvez essayer de réduire la sortie avec l’option suivante:
-Djava.net.debug=handshake
Quelques autres:
Voir docs .
Si vous en avez réellement besoin et que les performances sont essentielles pour votre application, vous pouvez instrumenter SSLSocket (dans la documentation, vous pouvez en savoir plus sur le processus de prise de contact) avec ASM / Btrace / etc et vérifier la état de poignée de main à l'intérieur. Mais dans ce cas, vous n’auriez pas d’informations de débogage - seulement vrai/faux.
Voir aussi Documents Tomcat avec tous les paramètres disponibles. Vous pouvez y lire qu'il existe JSSEImplementation class, qui est utilisé dans Tomcat. Et c'est wrapper pour JSSE.
J'ai eu le même problème à plusieurs reprises et je l'ai craqué comme moyen suivant. J'avais ma configuration de projet dans intelliJ.
*** CertificateRequest Types de certificats: RSA, DSS, ECDSA Algorithmes de signature pris en charge: SHA512withRSA, inconnu (hachage: 0x6, signature: 0x2), SHA512avecECDSA, SHA384avecRSA, inconnu (hachage: 0x5, signature). : 0x2), SHA384withECDSA, SHA256withRSA, Inconnu (dièse: 0x4, signature: 0x2), SHA256withECDSA, SHA224withRSA, Inconnu (hachage: 0x3, signature: 0x2), SHA224avecECDSA, SHA224withRSA, SHA1withRSA, SHA1withDSA, SHA2withRSA, SHA2withRSA, SHA2withRSA, SHA2withRSA, SHA2withRSA, SHA2withRSA, SHA1withDSA
CN = Symantec Public Classe 3, O = Symantec Corporation, C = US
CN = Gestion Symantec de classe 3, OU = Réseau approuvé par Symantec, O = Symantec, C = US
[lire] hash MD5 et SHA1: len = 302
Solution: ajoutez les certs manquants (pour notre exemple, deux certs CN = Symantec Public Class 3 et CN = Symantec Class 3 Manage).
nous devons comprendre les appels entre serveur et client à l'aide du protocole SSL. Veuillez consulter le lien suivant pour obtenir plus d'informations sur la communication entre serveur et client.
https://docs.Oracle.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html#InstallProbs
Je donnerai une vidéo de démonstration youtube si quelqu'un a un problème.
J'espère que cette solution aidera quelqu'un.
Je vous remercie.