SpringBoot2中使用HTTPS(包括HTTP轉(zhuǎn)HTTPS)示例

  • 版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請注明出處,謝謝。

1. 說明

由于SpringBoot2新版本的發(fā)布,有些新特性,在此就不一一列舉。由于這些變化,在實際開發(fā)中帶來了一些問題,在此記錄下,避免其他人再掉坑。主要步驟包括:

  1. 生成證書
  2. 修改配置文件
  3. 增加配置類
  4. 實現(xiàn)HTTP轉(zhuǎn)HTTPS

2. 生成證書

  • 獲取證書可通過購買,或者本機生成,以下演示本機生成
  • 通過keytool -genkey alias tomcat生成的.keystore已經(jīng)過時了,不推薦
  • 在正確配置完JDK環(huán)境變量的前提下,在任意目錄,執(zhí)行命令
    keytool -genkey -alias tomcat -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore keystore.p12 -validity 3650
  • 按提示填好相關(guān)信息……
  • 在當前目錄下會生成一個keystore.p12文件,即證書文件

3. 修改配置文件

  • 將證書文件復制到Idea中的項目根目錄
  • 修改application.properties文件
# 證書目錄
server.ssl.key-store = keystore.p12
#你之前填好的密碼
server.ssl.key-store-password= password
server.ssl.keyStoreType= PKCS12
server.ssl.keyAlias: tomcat

4. 增加配置類,包括實現(xiàn)HTTP端口轉(zhuǎn)換HTTPS

  • 直接看代碼,注意SpringBoot2的新變化
package xin.val1ant.ch7.config;


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.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class SSLConfig {

    @Bean
    public TomcatServletWebServerFactory servletContainer() { //springboot2 新變化

        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {

            @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(initiateHttpConnector());
        return tomcat;
    }

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容