SpringBoot配置Https与http请求

一 生成ssl证书,通过本地的keytools来进行生成,服务器环境有可能会出现问题

keytool.exe -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore D:/keystore.p12 -validity 3650

图片说明

这个密钥密码要记住,我设置的是123456

二 SpringBoot中properties文件设置

spring.application.name=httpsdemo
spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/static/
#这是https访问端口
server.port=8080
server.ssl.key-store:keystore.p12
server.ssl.key-store-password: 123456
server.ssl.keyStoreType: PKCS12
server.ssl.keyAlias: tomcat
#这是http访问端口,实现http转https
http.port=8081

三 将之前生成好的keystore.p12放在项目根路径下面

图片说明

配置http访问,两者不能是同一端口,所以我写成了8081

在SpringBoot的主驱动类中添加一下操作

package cn.personloger;

import org.apache.catalina.connector.Connector;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class HttpsdemoApplication {
    //驱动properties文件的http的访问端口
    @Value("${http.port}")
    private Integer port;

    public static void main(String[] args) {
        SpringApplication.run(HttpsdemoApplication.class, args);
    }


    //前面基本一致,只不过注入了一个http端口,主要改下面
    @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        tomcat.addAdditionalTomcatConnectors(createStandardConnector()); // 添加http
        return tomcat;
    }
    // 配置http
    private Connector createStandardConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setPort(port);
        return connector;
    }

}

四 访问

图片说明