springboot http转https

开发环境:springboot 1.5.10



文章目录

  • springboot http转https
      • 一、安全证书的生成
          • 1、进入jdk的目录
          • 2、生成一个证书
          • 3、获取tomcat.keystore文件,放入项目根目录
      • 二、配置SSL
          • 1、修改配置文件
      • 三、配置http→https转向
          • 1、在启动类中配置


springboot http转https

一、安全证书的生成

可以使用jdk自带的证书生成工具,jdk自带一个叫keytool的证书管理工具,可以用它来实现签名的证书。

1、进入jdk的目录

配置好基本的jdk环境,ctrl+r 输入cmd ,进入jdk的目录

2、生成一个证书
  • 别名:alias = tomcat
  • 密码:keypass = 123456
  • 生成位置:keystore = D:/keys
    keys文件夹需要自己先创建好
keytool -genkey -alias tomcat -keypass 123456 -keyalg RSA -keysize 1024 -validity 365 -keystore D:/keys/tomcat.keystore -storepass 123456
3、获取tomcat.keystore文件,放入项目根目录

springboot http转https_第1张图片

二、配置SSL

1、修改配置文件
  • 如果是yml文件:
server:
  port: 8443
  tomcat:
    uri-encoding: UTF-8
  ssl:
    key-store: tomcat.keystore
    key-password: 123456
    key-store-type: JKS
    key-alias: tomcat
  • 如果是properties文件:
server.port=8443
server.ssl.key-store=tomcat.keystore
server.ssl.key-password=123456
server.ssl.key-store-type=JKS
server.ssl.key-alias=tomcat

三、配置http→https转向

1、在启动类中配置
import org.apache.catalina.Context;
import org.apache.catalina.connector.Connector;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class SpringBootHttpsApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootHttpsApplication.class, args);
    }
    @Bean
    public EmbeddedServletContainerFactory servletContainer() {
        TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint constraint = new SecurityConstraint();
                constraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                constraint.addCollection(collection);
                context.addConstraint(constraint);
            }
        };
        tomcat.addAdditionalTomcatConnectors(httpConnector());
        return tomcat;
    }

    @Bean
    public Connector httpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        //Connector监听的http的端口号
        connector.setPort(8080);
        connector.setSecure(false);
        //监听到http的端口号后转向到的https的端口号
        connector.setRedirectPort(8443);
        return connector;
    }

}

配置完成。
启动Application,日志含信息如下:
在这里插入图片描述


注:以上生成的证书只是支持了https://*的url访问,并没有真的通过认证。申请真正的证书可以去阿里云等云服务提供商购买(一般也有免费的可供选择)。

你可能感兴趣的:(SpringBoot)