SpringBoot配置SLL,使用HTTPS访问

SpringBoot使用jar包运行,需要配置SSL,如果使用Nginx等web服务器进行转发,又觉得麻烦,索性直接使用SpringBoot自带的SSL方法,实现HTTPS访问。

如果使用了上面的配置就表示springboot应用程序不再在端口8080上支持HTTP连接请求,SpringBoot不能通过配置application.properties来实现既支持HTTP连接又支持HTTPS连接,这是做不到的,如果要同时支持HTTP和HTTPS,则需要以编程方式配置其中的一个,建议使用application.yml文件来配置HTTPS,以编程方式配置HTTP,这是比较容易的方法;

  1. 首先准备P12证书,如果是本地证书生成,可以参考文字末尾本地证书生成方法(常规用于内网部署),如果使用公网,可以在各大平台进行免费申请,这里不再说明

  1. 将p12证书,拷贝到项目的“resources”目录下面

  1. application.yml文件中server:下新增ssl配置,client.p12为证书文件名称

  ssl:
    key-store: classpath:client.p12
    key-store-password: 12345678
    key-store-type: PKCS12
    key-alias: client
    enabled: true

  1. 在启动程序中,进行Bean注入,8183为HTTP访问时使用的端口,443位SSL状态下访问端口

    @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        tomcat.addAdditionalTomcatConnectors(createHTTPConnector());
        return tomcat;
    }

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

  1. 本地证书生成方法,使用JAVA的JDK自带生成SSL证书的工具(keytool)

第一步:

keytool -genkey -alias tomcat -keypass 12345678 -keyalg RSA -keysize 2048 -validity 365 -keystore ./tomcat.keystore -storepass 12345678

第二步

keytool -genkey -alias client -keypass 12345678 -keyalg RSA -keysize 2048 -validity 365 -storetype PKCS12 -keystore ./client.p12 -storepass 12345678

即可完成

HTTPS其实是有两部分组成:HTTP + SSL / TLS,

也就是在HTTP上又加了一层处理加密信息的模块,并且会进行身份的验证。

猜你喜欢

转载自blog.csdn.net/zlxls/article/details/128946906