首頁  >  文章  >  Java  >  SpringBoot的HTTPS配置如何實現

SpringBoot的HTTPS配置如何實現

王林
王林轉載
2023-05-27 16:29:061400瀏覽

HTTPS 配置

由於HTTPS具有良好的安全性,在開發中得到了越來越廣泛的應用,像是微信公眾號、小程式等的開發都要使用HTTPS來完成。對於個人開發者而言,一個HTTPS 證書的價格還是有點貴,國內有一些雲端伺服器廠商提供免費的HTTPS證書,帳號可以申請數個。不過在jdk中提供了一個Java數位證書管理工具keytool,在\jdkbin目錄下,透過這個工具可以自己產生一個數位證書,產生指令如下:

keytool -genkey -alias tomcathttps -keyalg RSA -keysize 2048 -keystore sang.p12 -validity 365
  • genkey表示要建立一個新的密鑰。

  • alias表示keystore的別名。

  • keyalg表示使用的加密演算法是RSA,一種非對稱加密演算法。

  • keysize表示金鑰的長度。

  • keystore表示產生的金鑰存放位置。

  • validity表示金鑰的有效時間,單位為天。

根據提示,在cmd視窗中執行命令時需要提供密碼或口令等信息,輸入即可完成執行程序。指令執行完成後,會在目前使用者目錄下產生一個名為sang.p12的檔案,將這個檔案複製到專案的根目錄下,然後在application.properties中做如下設定:

# key-store表示密钥文件名。
server.ssl.key-store=sang.p12 
# key-alias表示密钥别名。
server.ssl.key-alias=tomcathttps
#key-store-password 就是在cmd命令执行过程中输入的密码。
server.ssl.key-store-password=123456

設定成功後,啟動項目,在瀏覽器中輸入“https:/localhost:8080”以查看結果。請注意,產生的憑證未經瀏覽器認證,因此您需要添加信任或繼續前進。請參考下圖。

SpringBoot的HTTPS配置如何實現

成功運行的結果如圖

SpringBoot的HTTPS配置如何實現

#此時,如果以HTTP 的方式存取接口,就會訪問失敗,如圖

SpringBoot的HTTPS配置如何實現

原話重寫:Spring Boot 不支援在設定中同時啟用HTTP 和HTTPS。這個時候可以設定請求重新導向,將 HTTP 請求重新導向為 HTTPS 請求。設定方式如下

@Configuration
public class TomcatConfig {
    @Bean
    TomcatServletWebServerFactory tomcatServletWebServerFactory() {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory() {
            @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);
            }
        };
        factory.addAdditionalTomcatConnectors(createTomcatConnector());
        return factory;
    }

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

這裡先設定一個TomcatServletWebServerFactory,然後新增一個Tomcat 中的Connector(監聽8080埠),並將請求轉送到8081上去。
設定完成後,在瀏覽器中輸入“http://localhost:8080/”,就會自動重定向到https://localhost:8081/ 上。

以上是SpringBoot的HTTPS配置如何實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除