TLSv1.2 на Jboss 5.1.0 GA с использованием Java 6 и BouncyCastle - PullRequest
0 голосов
/ 23 мая 2018

Я столкнулся с проблемой с сервером Jboss и соединителем https, работающим на Java 6. Я хочу, чтобы мой сервер использовал только TLSv1.2 и наборы шифров "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_SHA * для подтверждения * для шифрования * MES4.1001 *

Я знаю, что Java 6 не поддерживает TLSv1.2, но я добавил JCE Bouncy Castle и провайдера JSSE в JDK (https://www.bouncycastle.org/latest_releases.html):

  • Добавлены файлы JAR ( bcprov-jdk15on-159.jar и bctls-jdk15on-159.jar ) в path_to_jdk/ jre / lib / ext папка

  • отредактированный файл path_to_jdk / jre / lib / security / java.security для добавления строк:

    security.provider.10 = org.bouncycastle.jce.provider.BouncyCastleProvider security.provider.11 = org.bouncycastle.jsse.provider.BouncyCastleJsseProvider

Инструкция Java: SSLContext.getInstance ("TLSv1.2"); больше не выдает NoSuchAlgorithmException, если я тестирую его на небольшом тестовом классе.

На Jboss:

  • Отредактированный файл path_to_jboss / server / default/deploy/jbossweb.sar/server.xml иметь:

    <Протокол соединителя = "HTTP / 1.1" SSLEnabled = "true" port = "8443" address = "$ {jboss.bind.address} "keystoreFile =" $ {jboss.server.home.dir} /conf/jboss.pfx "keystorePass =" пароль "<strong> sslProtocols =" TLSv1.2 " maxThreads =" 170 "/>

После этого jboss по-прежнему предоставляет только протоколы SSLv3 и TLSv1 для соединения https.

Любое решение?

Спасибо

1 Ответ

0 голосов
/ 24 мая 2018

Я полагаю, что атрибут 'sslProtocols' преобразуется в вызов SSLParameters.setProtocols (позже получаемый эффект SSLSocket.setParameters) и не влияет на вызов SSLContext.getInstance.Таким образом, вы все еще получаете SunJSSE SSLContext, потому что вы добавили BCJSSE с более низким приоритетом.

Я предлагаю переместить запись BouncyCastleJsseProvider в java.security на более высокий приоритет (чем com.sun.net.ssl.internal.ssl.Provider).

Также в java.security вам нужно будет установить тип KMF по умолчанию от SunX509 до PKIX (изменить существующую запись):

ssl.KeyManagerFactory.algorithm=PKIX

Это потому, что BCJSSE в настоящее время работает толькос собственной реализацией KMF.

...