一尘不染

如何设置使用SNI提供两个SSL证书的Tomcat?

tomcat

根据这两个答案(1)(2),可以使用服务器名称指示(SNI)从同一个tomcatserver提供两个ssl证书。

我的问题是,如何设置呢?我可以设置两个虚拟主机,但是我仍然只有一个连接器,该连接器向客户端提供指定的ssl证书。在连接器中,可以指定用于证书的密钥库和别名,但是没有参数说明此连接器用于哪个虚拟主机,或者应该根据使用的域将其提供给客户端的证书。

如何在使用SNI时告诉tomcat他必须使用哪个ssl证书(或更正确地说是哪个密钥库)?


阅读 413

收藏
2020-06-16

共1个答案

一尘不染

您需要重新阅读这些问题的答案。直到Java8,服务器端才支持SNI。Tomcat8必须支持的最低Java版本是Java7,因此,目前在Tomcat中尚无SNI支持。

如果Tomcat在Java 8或更高版本上运行,则可以有选择地支持SNI,但是这需要在Tomcat中更改代码(目前尚无计划)。

截至2014年12月的更新:

在Tomcat 9 的TODO列表中添加了SNI支持。该TODO列表很长,并且SNI当前不在列表的顶部。一如既往地欢迎补丁。

一旦在Tomcat 9中实现了SNI,就有可能将SNI支持反向移植到Tomcat 7和Tomcat8。再次,打上欢迎补丁。

截至2015年6月的更新:

SNI已为Tomcat 9实现。所有三个HTTP连接器实现(NIO,NIO2和APR/native)都支持SNI。要将SNI与NIO或NIO2结合使用,您将需要从源代码编译Tomcat 9(也称为主干)。要将SNI与APR /native一起使用,您还需要编译tc-native干线( 不是Tomcat版本当前使用的1.1.x分支 )。

TLS配置已发生重大变化,以支持SNI。构建Tomcat 9后,详细信息将在docs Web应用程序中。

截至2016年11月的更新:

SNI支持包含在Tomcat 8.5.x中。它不太可能进一步移植。即不太可能使其达到8.0.x或7.0.x。

2020-06-16