如何在命令行上启动Spring Boot自动重定向到https

时间:2014-04-28 14:57:18

标签: java tomcat spring-mvc ssl spring-boot

我有与this question相同的问题,但在EC2上下文中没有,只是从命令行启动我的spring启动应用程序。我设法通过遵循this example

中的代码,使用HTTPS运行我的应用程序
@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" );

                    }
                } );
            }
        };
    }
}

现在我可以在https://localhost:8443/上访问我的应用程序了。

我希望http://localhost:8443重定向到https。现在Chrome只显示:"没有收到数据"这不是非常用户友好。

1 个答案:

答案 0 :(得分:0)

AFAIK你不能这样做:如果Tomcat在端口8443上监听HTTPS,它就无法在同一端口上侦听HTTP。您链接的另一个问题是不同的,因为它不是关于特定端口。