У меня есть веб-служба https, работающая на java 7. Мне нужно внести изменения, чтобы эта служба только принимала соединение tls1.2 и отклоняла ssl3, tls1.0 и tls1.1.
Я добавил следующий параметр java, чтобы tls1.2 был наивысшим приоритетом.
-Dhttps.protocols=TLSv1.2
но также принимает соединения tls1.0 от java-клиентов. если клиент также работает с указанным выше параметром java, соединение равно tls1.2, но если клиент работает без этого параметра, соединения будут tls1.0.
Я немного поиграл с файлом java.security в папке jdk/jre/lib/security.
В настоящее время у меня есть следующие отключенные алгоритмы:
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
Я использую java 7, обновление 79. Я не склонен к перехвату каждого соединения и проверке версии tls.
Мой сертификат сервера составляет 2048 бит, сгенерированный с помощью MD5 с алгоритмом RSA.
Если список отключенных алгоритмов имеет RSA вместо RSA keySize < 2048, я получаю сообщение SSLHandShakeError с сообщением об ошибке: нет общих наборов шифров.
Моя тестовая программа запускает http-сервер из следующего URL-адреса: http://www.herongyang.com/JDK/HTTPS-HttpsEchoer-Better-HTTPS-Server.html
пожалуйста, помогите, как заставить java принимать только соединения tls 1.2.