项目需要同时支持 http 和 https 的接发,于是我上网查了一下,基本都是讲怎么配置内置tomcat的,方法也都大同小异,application里加 ssl 配置,然后加个connector之类的,但是由于我的项目是要部署在外置tomcat上的,所以网上那些就没用了,也查过 tomcat 怎么配置,参考的是这个博文:Springboot使用外置tomcat时https的设置_ITWANGBOIT的博客-CSDN博客
然而访问还是出现:这个网站无法提供安全连接;并且后台有报错:
org.apache.coyote.http11.Http11Processor.service 解析 HTTP 请求 header 错误注意:HTTP请求解析错误的进一步发生将记录在DEBUG级别。
java.lang.IllegalArgumentException: 在方法名称中发现无效的字符串, HTTP 方法名必须是有效的符号.
我应该怎么正确配置呢?
可能需要的项目信息:前后端分离,前端纯html,前后端部署在同一个 tomcat 里作为2个 service 运行的,参考:Tomcat配置多个Service,多个同名的应用运行在一个tomcat下_我的成长之路!-CSDN博客_tomcat 多个service
ROOT
2
贴上你的HTTPS配置信息,以及客户端访问的异常信息。
tomcat里改了web.xml和serve.xml,web.xml 里面的配置:
<login-config>
<!-- Authorization setting for SSL -->
<auth-method>CLIENT-CERT</auth-method>
<realm-name>Client Cert Users-only Area</realm-name>
</login-config>
<security-constraint>
<!-- Authorization setting for SSL -->
<web-resource-collection >
<web-resource-name >SSL</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
server.xml 里面的:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/tomcat.keystore"
certificateKeystorePassword="123456"
type="RSA" />
</SSLHostConfig>/>
</Connector>
ROOT
5
你只修改Server.xml
中的Connector
节点试试看,其他的都不要动。
<Connector
port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="conf/tomcat.keystore"
keystorePass="123456"/>
还要注意看启动日志,是不是有异常。日志会显示是否成功加载了证书,是不是以HTTPS提供服务的。
启动日志异常倒是没有,是不是以 https 启动的,我也不是很确定,我截取一段 catalina log 吧:
-2021 16:25:46.542 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-9999"]
13-Apr-2021 16:25:46.895 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8088"]
13-Apr-2021 16:25:46.901 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["https-jsse-nio-8443"]
最后是这样:
13-Apr-2021 16:26:18.461 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8088"]
13-Apr-2021 16:26:18.464 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["https-jsse-nio-8443"]
13-Apr-2021 16:26:18.472 信息 [main] org.apache.catalina.startup.Catalina.start [31,137]毫秒后服务器启动
比较全的:
13-Apr-2021 16:25:46.542 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-9999"]
13-Apr-2021 16:25:46.895 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8088"]
13-Apr-2021 16:25:46.901 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["https-jsse-nio-8443"]
13-Apr-2021 16:25:47.334 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[2,600]毫秒内初始化
13-Apr-2021 16:25:47.378 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina]
13-Apr-2021 16:25:47.379 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.35]
13-Apr-2021 16:25:47.780 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps\static]
13-Apr-2021 16:25:47.815 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps\static]的部署已在[35]毫秒内完成
13-Apr-2021 16:25:47.816 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps\views]
13-Apr-2021 16:25:47.844 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps\views]的部署已在[29]毫秒内完成
13-Apr-2021 16:25:47.849 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-9999"]
13-Apr-2021 16:25:47.863 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina2]
13-Apr-2021 16:25:47.871 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.35]
13-Apr-2021 16:25:47.914 信息 [main] org.apache.catalina.startup.HostConfig.deployWAR 正在部署web应用程序存档文件[C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps2\business_bank.war]
13-Apr-2021 16:25:57.563 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
13-Apr-2021 16:25:57.972 信息 [main] org.apache.catalina.core.ApplicationContext.log 2 Spring WebApplicationInitializers detected on classpath
13-Apr-2021 16:26:05.744 信息 [main] org.apache.catalina.core.ApplicationContext.log Initializing Spring embedded WebApplicationContext
13-Apr-2021 16:26:17.043 信息 [main] org.apache.catalina.startup.HostConfig.deployWAR web应用程序存档文件[C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps2\business_bank.war]的部署已在[29,130]ms内完成
13-Apr-2021 16:26:17.048 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps2\docs]
13-Apr-2021 16:26:17.163 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps2\docs]的部署已在[115]毫秒内完成
13-Apr-2021 16:26:17.168 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps2\examples]
13-Apr-2021 16:26:18.087 信息 [main] org.apache.catalina.core.ApplicationContext.log ContextListener: contextInitialized()
13-Apr-2021 16:26:18.106 信息 [main] org.apache.catalina.core.ApplicationContext.log SessionListener: contextInitialized()
13-Apr-2021 16:26:18.147 信息 [main] org.apache.catalina.core.ApplicationContext.log ContextListener: attributeAdded('StockTicker', 'async.Stockticker@230050cf')
13-Apr-2021 16:26:18.177 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps2\examples]的部署已在[1,009]毫秒内完成
13-Apr-2021 16:26:18.204 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps2\host-manager]
13-Apr-2021 16:26:18.292 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps2\host-manager]的部署已在[90]毫秒内完成
13-Apr-2021 16:26:18.296 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps2\json]
13-Apr-2021 16:26:18.358 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps2\json]的部署已在[62]毫秒内完成
13-Apr-2021 16:26:18.365 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps2\manager]
13-Apr-2021 16:26:18.429 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps2\manager]的部署已在[63]毫秒内完成
13-Apr-2021 16:26:18.461 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8088"]
13-Apr-2021 16:26:18.464 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["https-jsse-nio-8443"]
13-Apr-2021 16:26:18.472 信息 [main] org.apache.catalina.startup.Catalina.start [31,137]毫秒后服务器启动
ROOT
8
这句话就是了,在8443端口提供的https服务,你访问要自己添加 8443
https://localhost:8443/
ROOT
10
成功了吧?你Connector
这个xml配置的端口是啥,你访问就得用啥。