微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 tomcat 8.5 中缺少 ServerSocketFactory

如何解决在 tomcat 8.5 中缺少 ServerSocketFactory

根据以下链接

https://github.com/spring-projects/spring-boot/issues/6164,以下特性从 tomcat 8.5 中移除

a) 类 org.apache.tomcat.util.net.ServerSocketFactory 不再存在

b) 类 org.apache.tomcat.util.net.jsse.JSSESocketFactory 不再存在

c) 方法 JSSEImplementaton.getServerSockerFactory(AbstractEndpoint) 不再存在

d) 方法 JSSEImplementaton.getSSLUtil(AbstractEndpoint) 不再存在

这些使我们从 tomcat 8.0 升级到 tomcat 8.5.x 变得困难。

我们有两个要求

  1. Tomcat AJP 协议接收来自 HTTP 服务器的加密内容并给出加密响应。通过使用实现 tomcat 的 ServerSocketFactory 接口的自定义类,这在 tomcat 8 中是可能的。
  2. 将 tomcat https 的证书文件存储在自定义密钥库(XML 文件)中

这些如何在tomcat 8.5中实现?任何建议表示赞赏。 (我们在 Tomcat 8 中使用自定义 SocketFcatory 实现了 tomcat 的接口)

解决方法

连接器重构后允许指定任意 JIoEndpointServerSocketFactory 不再可用。

但是,如果您允许对 Tomcat 的代码库进行一些更改,AJP 连接器几乎已准备好接受 SSL 连接:AbstractAjpProtocol 类只是缺少 addSslHostConfigfindSslHostConfigs 或更好的实现具有不存储或返回任何带有非常明确的注释的实现:

AJP 不支持 SSL

如果您像在 AbstractHttp11Protocol 中那样更改它们,您将能够像配置 HTTP/1.1 连接器一样配置 AJP 连接器:

<Connector SSLEnabled="true" port="8009" protocol="AJP/1.3">
    <SSLHostConfig ...>
        <Certificate ... />
    </SSLHostConfig>
</Connector>

关于证书存储,您可以实现自己的 KeyStoreSpi 和安全提供程序并使用:

<Certificate certificateKeystoreProvider="your_provider"
             certificateKeystoreType="your_type"
             ... />

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?