如何在Spring Boot中从http重定向到https?

时间:2018-06-14 09:12:49

标签: spring http spring-boot https

我的网站正在使用https协议。当我执行提交表单的操作时,它会重定向到http,而不是https。 我用这种方式。

@Bean
public EmbeddedServletContainerFactory servletContainer() {
   TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
      @Override
      protected void postProcessContext(Context context) {
         SecurityConstraint securityConstraint = new SecurityConstraint();
         securityConstraint.setUserConstraint("CONFIDENTIAL");
         SecurityCollection collection = new SecurityCollection();
         collection.addPattern("/*");
         securityConstraint.addCollection(collection);
         context.addConstraint(securityConstraint);
      }
   };
   tomcat.addAdditionalTomcatConnectors(createHttpConnector());
   return tomcat;
}


private Connector createHttpConnector() {
   Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
   connector.setScheme("http");
   connector.setPort(8080);
   connector.setSecure(false);
   connector.setRedirectPort(8443);
   return connector;
}

但它在构建时显示错误"地址已在使用中:bind"。 你能帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

你必须杀死该特定端口的进程

在Windows中

netstat -ano

将列出所有协议,端口和进程监听。使用

taskkill -pid "proces to kill" /f

杀死侦听端口的进程。 e.g

 taskkill -pid 431 /f

在Linux中

如果您知道该进程正在运行的端口,则可以键入:lsof -i:<port>

例如,lsof -i:8080,列出在端口8080上运行的进程(pid)。

然后使用kill <pid>终止该过程。

如果在执行上述步骤后,它无法验证您的步骤

要在Spring Boot中启用HTTPS,请执行以下三个步骤。

步骤1.获取SSL证书:生成自签名证书或从证书颁发机构获取证书

步骤2.在Spring Boot中启用HTTPS。

  • 在位置的application.properties文件中添加以下配置 的src /主/资源

    server.port: 8443
    server.ssl.key-store: <keystore> (e.g.keystore.p12) 
    server.ssl.key-store-password: <key-store-password> (e.g.mypassword)
    server.ssl.keyStoreType: <keyStoreType>(e.g.PKCS12)
    server.ssl.keyAlias: tomcat
    

步骤3.将HTTP重定向到HTTPS(您已经完成)

有关详细信息,请参阅Enable HTTPS in Spring Boot