Java 如何在命令行上启动Spring引导时自动重定向到https
我有与EC2相同的问题,但不是在EC2上下文中,只是简单地从命令行启动spring引导应用程序。通过以下代码,我成功地使用HTTPS运行了我的应用程序: 现在我可以在Java 如何在命令行上启动Spring引导时自动重定向到https,java,tomcat,spring-mvc,ssl,spring-boot,Java,Tomcat,Spring Mvc,Ssl,Spring Boot,我有与EC2相同的问题,但不是在EC2上下文中,只是简单地从命令行启动spring引导应用程序。通过以下代码,我成功地使用HTTPS运行了我的应用程序: 现在我可以在https://localhost:8443/ 我想要http://localhost:8443将重定向到https。现在Chrome只显示“未接收到数据”,这对用户不太友好。AFAIK您不能这样做:如果Tomcat正在侦听端口8443上的HTTPS,它就不能侦听同一端口上的HTTP。您链接到的另一个问题与此不同,因为它与特定端口无
https://localhost:8443/
我想要
http://localhost:8443
将重定向到https。现在Chrome只显示“未接收到数据”,这对用户不太友好。AFAIK您不能这样做:如果Tomcat正在侦听端口8443上的HTTPS,它就不能侦听同一端口上的HTTP。您链接到的另一个问题与此不同,因为它与特定端口无关。谢谢。事实似乎确实如此:
@Profile( "security" )
@Configuration
public class SecurityConfiguration
{
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer( @Value("${keystore.file}") Resource keystoreFile,
@Value("${keystore.pass}") final String keystorePass ) throws IOException
{
final String absoluteKeystoreFile = keystoreFile.getFile().getAbsolutePath();
return new EmbeddedServletContainerCustomizer()
{
@Override
public void customize( ConfigurableEmbeddedServletContainer container )
{
TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory)container;
tomcat.addConnectorCustomizers( new TomcatConnectorCustomizer()
{
@Override
public void customize( Connector connector )
{
connector.setPort( 8443 );
connector.setSecure( true );
connector.setScheme( "https" );
Http11NioProtocol proto = (Http11NioProtocol)connector.getProtocolHandler();
proto.setSSLEnabled( true );
proto.setKeystoreFile( absoluteKeystoreFile );
proto.setKeystorePass( keystorePass );
proto.setKeystoreType( "PKCS12" );
proto.setKeyAlias( "tomcat" );
}
} );
}
};
}
}