【问题标题】:Use a custom SSLSocketFactory in WildFly 10在 WildFly 10 中使用自定义 SSLSocketFactory
【发布时间】:2019-01-23 12:14:56
【问题描述】:

我希望 WildFly 10 使用定制的 SSLSocketFactory,以便我可以实施一些时髦的 TLS 密码套件作为安全研究的一部分。

我建立了一个虚拟工厂,它打印日志并将它们传递给默认提供程序。但是,我无法让 WildFly 使用它。

我已将安全属性 ssl.SocketFactory.provider=<my.class.name> 添加到我的 JRE 的 java.security 文件中。我已将包含我的实现的 JAR 放在 JRE 的 lib/ext 目录中。

我已经通过编写一个小型 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 提供程序?

【问题讨论】:

    标签: java ssl jboss wildfly


    【解决方案1】:

    我通过创建一个实现 "SSLContext.TLS" 的安全提供程序解决了这个问题。这为我提供了一个钩子来拦截套接字工厂的构建方式。

    通过将此提供程序放在 java.security 提供程序列表的顶部,我可以拦截我需要的内容并返回不同的 SSLSocketFactorySSLServerSocketFactory 实例。

    有用的链接:

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

    【讨论】:

      猜你喜欢
      • 2017-01-21
      • 1970-01-01
      • 2023-04-07
      • 2015-03-09
      • 1970-01-01
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多