Используйте пользовательский SSLSocketFactory в WildFly 10 - PullRequest
0 голосов
/ 23 января 2019

Я бы хотел, чтобы WildFly 10 использовал сделанный на заказ SSLSocketFactory, чтобы я мог реализовать некоторые классные шифровальные комплекты TLS как часть исследования безопасности.

Я создал фиктивную фабрику, которая печатает журналы и передает ихпоставщик по умолчанию.Однако я не могу заставить его использовать WildFly.

Я добавил свойство безопасности ssl.SocketFactory.provider=<my.class.name> в файл java.security в моей JRE.Я поместил JAR, содержащий мою реализацию, в каталог lib / ext JRE.

Я проверил, что это сработало, написав небольшую тестовую программу Java:

public static void main(String[] args) throws Exception {
    SocketFactory factory = SSLSocketFactory.getDefault();
    System.out.println(factory.getClass().getCanonicalName());
}

, которая правильно печатаетмое имя провайдера, когда оно выполняется из командной строки вне WildFly.

К сожалению, WildFly, похоже, игнорирует этот параметр.Я попытался запустить WildFly с включенной отладкой (добавил JAVA_OPTS="$JAVA_OPTS -Djavax.net.debug=ssl" в мой standalone.conf файл), но нет сообщений об ошибках при загрузке моего провайдера.

WildFly настроен без JAVA_HOME, так что это простоиспользуя команду java для запуска сервера.

Как я могу заставить WildFly 10 использовать мой провайдер SSL?

1 Ответ

0 голосов
/ 24 января 2019

Я решил это, создав провайдера безопасности, который реализует "SSLContext.TLS".Это дает мне возможность перехватить, как создаются фабрики сокетов.

Поместив этого провайдера в верхнюю часть списка провайдеров java.security, я могу перехватывать нужные мне вещи и возвращать разные SSLSocketFactory или SSLServerSocketFactory instances.

Полезные ссылки:

https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider.html#Steps https://docs.oracle.com/javase/7/docs/api/javax/net/ssl/SSLContextSpi.html

...