同时运行带SSL和未加密的Spring Boot应用程序(嵌入式Tomcat)
有没有一种方法可以运行Spring引导应用程序(runnable war),以便它在两个端口上侦听—一个使用SSL,另一个不使用SSL。我使用的是嵌入式Tomcat8 当前正在使用配置SSL同时运行带SSL和未加密的Spring Boot应用程序(嵌入式Tomcat),tomcat,ssl,spring-boot,tomcat8,Tomcat,Ssl,Spring Boot,Tomcat8,有没有一种方法可以运行Spring引导应用程序(runnable war),以便它在两个端口上侦听—一个使用SSL,另一个不使用SSL。我使用的是嵌入式Tomcat8 当前正在使用配置SSL @Bean @Profile('tls') EmbeddedServletContainerCustomizer servletContainerCustomizer () throws Exception { new EmbeddedServletContainerCustomizer () {
@Bean
@Profile('tls')
EmbeddedServletContainerCustomizer servletContainerCustomizer ()
throws Exception {
new EmbeddedServletContainerCustomizer () {
@Override
public void customize (ConfigurableEmbeddedServletContainer container) {
TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container
tomcat.addConnectorCustomizers (
new TomcatConnectorCustomizer () {
@Override
public void customize (Connector connector) {
connector.setPort (Integer.parseInt (retrieveRequiredSpringProperty ('ssl.connection.port')))
connector.setSecure (true)
connector.setScheme ('https')
connector.setProtocol (retrieveSpringPropertyOrSpecified ('ssl.connection.protocol', 'HTTP/1.1'))
Http11NioProtocol proto = (Http11NioProtocol) connector.getProtocolHandler ()
proto.setSSLEnabled (true)
proto.setKeystoreFile (retrieveRequiredSpringProperty ('ssl.protocol.keystore.file'))
proto.setKeystorePass (retrieveRequiredSpringProperty ('ssl.protocol.keystore.password'))
proto.setKeyPass (retrieveSpringPropertyOrSpecified ('ssl.protocol.keystore.cert.password', null))
proto.setKeystoreType ('JKS')
proto.setKeyAlias (retrieveRequiredSpringProperty ('ssl.protocol.keystore.cert.name'))
proto.setSslProtocol ('TLS')
proto.setClientAuth ('false')
}
}
)
}
}
}
我曾尝试使用多个TomcatConnectorCustomizer
s,但最后列出的一个似乎是覆盖的,而不是添加的
欢迎您一如既往地提出任何建议 A
TomcatConnectorCustomizer
仅修改现有的连接器(名称中的线索)。要添加其他连接器,您只需使用不同的API(示例),例如(从示例中复制):
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
tomcat.addAdditionalTomcatConnectors(createConnector());
return tomcat;
}