根据官方文档tomcat8.5且JAVA7及其以上才支持SNI

如果tomcat版本较低,且需要绑定多个域名情况下,建议使用反向代理方式部署HTTPS

tomcat绑定SSL比较简单,在    <Connector port=”8080″配置字节下新增443端口监听设置即可。

配置字节如下:

<Connector port=”443″
     protocol=”HTTP/1.1″
     SSLEnabled=”true”
     scheme=”https”
     secure=”true”
     keystoreFile=”pfx证书路径”
     keystoreType=”PKCS12″
     keystorePass=”证书导入密码”
     clientAuth=”false”
     ciphers=”TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256″
     SSLProtocol=”TLSv1+TLSv1.1+TLSv1.2″
     SSLCipherSuite=”ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4″/>

本例中根据证书路径和情况修改如下:

1.jpg

保存后重启tomcat服务。

访问测试效果:

2.jpg

从上面探针可以看到我这里使用tomcat版本为8.5.23,支持SNI,即可以绑定多个域名和对应证书。

tomcat中多域名SSL绑定使用SSLHostConfig配置字节来分别制定每个域名对应证书文件和设置。

这里使用apache格式证书文件绑定,增加内容如下:

<Connector port=”443″
protocol=”org.apache.coyote.http11.Http11Nio2Protocol”
maxThreads=”150″
SSLEnabled=”true”
defaultSSLHostConfigName=”milworm.cn” >
<!–第一个域名证书设置–>
<SSLHostConfig hostName=”milworm.cn” >
<Certificate certificateKeyFile=”D:/server/Apache2.2/conf/cert/milwrom/private.key”
certificateFile=”D:/server/Apache2.2/conf/cert/milwrom/certificate.crt”
certificateChainFile=”D:/server/Apache2.2/conf/cert/milwrom/ca_bundle.crt”
type=”RSA” />
</SSLHostConfig>
<!–第二个域名证书设置–>
<SSLHostConfig hostName=”www.pentester.cn” >
<Certificate certificateKeyFile=”D:/server/Apache2.2/conf/cert/pentester/private.key”
certificateFile=”D:/server/Apache2.2/conf/cert/pentester/certificate.crt”
certificateChainFile=”D:/server/Apache2.2/conf/cert/pentester/ca_bundle.crt”
type=”RSA” />
</SSLHostConfig>
</Connector>

配置文件:

3.jpg

如上,分别指定了milworm和pentester域名的证书路径。

使用host配置字节方式,新增两个站点,分别绑定不同域名、指向不同目录。

4.jpg

访问测试:

证书正常,探针显示域名、路径都和指定路径相同。

5.jpg

6.jpg

 

注意:

tomcat直接绑定证书注意是否有多域名多站点需求

留意JDK、tomcat版本

tomcat不支持SNI或操作繁琐的情况下,考虑IIS、apache、nginx代理方式,在IIS、apache、nginx前端web服务上来操作绑定HTTPS

IIS反向代理tomcat绑定https时,选择上启用SSL卸载。以免tomcat未配置HTTPS访问的情况下请求得不到正常响应。

7.jpg

取消启用SSL卸载情况下访问tomcat运用,出现502错误:

8.jpg

启用SSL卸载,IIS和后端互采用http方式:

9.jpg

取消SSL卸载选项,IIS和后端交换协议根据请求选择:

10.jpg

配置文件下载:tomcat8-ssl.zip

注:为了测试apache\IIS反向代理下绑定SSL,配置文件中HTTPS相关字节已注释。