有时候需要在服务里配置多个域名,由于https协议的服务除了新增域名解析之外还需要配置对应的证书
配置方法:
- tomcat使用http协议,新增NGINX作为转发代理,在NGINX配置多证书
- tomcat内配置多证书模式
- 这里主要介绍如何在tomcat内配置多域名证书方式
修改server.xml
<Connector port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol"
SSLEnabled="true"
defaultSSLHostConfigName="a1.domain.com"
maxHttpHeaderSize="81920"
enableLookups="false"
maxThreads="1000"
minSpareThreads="100"
acceptCount="900"
connectionTimeout="120000"
disableUploadTimeout="true"
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
compression="on"
compressionMinSize="1024"
compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript"
noCompressionUserAgents="gozilla, traviata"
useSendfile="false"
redirectPort="9446"
maxPostSize="-1"
scheme="https"
secure="true">
<SSLHostConfig hostName="a1.domain.com">
<Certificate certificateKeystoreFile="keys/a1.jks"
certificateKeystorePassword="oZYqXIyr" />
</SSLHostConfig>
<SSLHostConfig hostName="a2.domain.com">
<Certificate certificateKeystoreFile="keys/a2.jks"
certificateKeystorePassword="oZYqXIyr" />
</SSLHostConfig>
</Connector>
重启tomcat就可以了
注意点:
- tomcat的版本选择需要在tomcat8.5以上,本文中依赖的tomcat的版本为: 9.0.0.M21
- 在网上很多资料中(包含: DeepSeek)中都对sslProtocol进行了配置,结果一直报错提示: (xxx提示已经找不到对应的提示了,大概就是协议初始化失败这类的.....)
错误的配置参数:
1. 设置TLSv1.2
<Connector port="8080"
sslProtocol="TLSv1.2">
2. 设置TLSv1.3
<Connector port="8080"
sslProtocol="TLSv1.3">
3. 设置TLSv1.3+TLSv1.2
<Connector port="8080"
sslProtocol="TLSv1.3+TLSv1.2">
4. 设置TLS
<Connector port="8080"
sslProtocol="TLS">
以上指定的ssl协议版本都报错,直接去掉使用默认的协议