Comment forcer java server à accepter uniquement les connexions tls 1.2 et rejeter les connexions tls 1.0 et tls 1.1

j'ai un service web https fonctionnant sur java 7. Je dois faire des changements pour que ce service n'accepte que tls1.2 connexion et rejet ssl3, tls1.0 et tls1.1.

j'ai ajouté le paramètre java suivant pour que tls1.2 est la plus haute priorité.

-Dhttps.protocols=TLSv1.2
<!-Mais il accepte aussi le tls1.0 connexions des clients java. si le client utilise aussi le paramètre java ci-dessus, la connexion est tls1.2 mais si le client tourne sans ce paramètre, le connections est tls1.0.

j'ai fait quelques jeux autour de la java.fichier de sécurité dans le dossier jdk/jre/lib/security.

j'ai actuellement suivantes désactivé algorithmes:

jdk.certpath.disabledAlgorithms= MD2, MD4, MD5, SHA224, DSA, EC keySize < 256, RSA keySize < 2048, SHA1 keysize < 224
jdk.tls.disabledAlgorithms=DSA, DHE, EC keySize < 256, RSA keySize < 2048, SHA1 keysize < 224

j'utilise java 7, update 79. Je ne suis pas enclin à intercepter chaque connexion et à vérifier la version tls.

mon certificat de serveur est 2048 bit généré avec MD5 avec algorithme RSA.

si la liste des algorithmes désactivés a rsa à la place de RSA keySize < 2048, je reçois le SSLHandShakeError avec message d'erreur: Aucune suite de chiffrement en commun.

mon programme de test exécute le serveur http à partir de L'URL suivante: http://www.herongyang.com/JDK/HTTPS-HttpsEchoer-Better-HTTPS-Server.html

s'il vous plaît aider à faire java accepter seulement les connexions tls 1.2.

15
demandé sur PankajSays 2015-09-08 23:08:43

3 réponses

j'ai trouvé une solution pour ce. J'ai mis le

jdk.tls.disabledAlgorithms= SSLv2Hello, SSLv3, TLSv1, TLSv1.1

dans le fichier jre/lib/security/java.de sécurité sur le serveur.

après avoir paramétré ceci, le serveur n'accepte que les TLS1.2 connexion et rejet des versions inférieures du protocole de sécurité.

21
répondu PankajSays 2015-09-10 19:27:07

Juste une petite remarque;

dans la question, vous avez indiqué que vous aviez généré un certificat de taille 2048 avec MD5. Mais dans le chemin de cert alg vous avez désactivé MD5 donc cela ne devrait normalement pas fonctionner. Deuxièmement, les certificats de serveur générés avec un hash MD5 sont bannis des navigateurs modernes tels que Internet Explorer 10/Edge.

j'aimerais vous conseiller de générer votre certificat de serveur au moins avec un SHA256 ou < hash.

2
répondu TyGp 2016-05-31 09:54:00

j'ai aussi fait les mêmes modifications dans "/java/jdk1.7.0_79/jre/lib/security"-java.fichier de sécurité mais certains clients sont toujours en mesure d'appeler mes services avec le protocole SSL.

----Modifications jdk.tls.disabledAlgorithms=SSL, SSLv2, SSLv3, TLSv1, TLSv1.1, MD5, SSLv3, DSA, RSA keySize < 2048

0
répondu Abhimanyu Kumar 2018-06-14 08:18:56