首頁 >Java >java教程 >SpringBoot中怎麼實現配置SSL的同時支援http和https訪問

SpringBoot中怎麼實現配置SSL的同時支援http和https訪問

王林
王林轉載
2023-05-18 14:25:061090瀏覽

傳輸層安全性協定(英文:Transport Layer Security,縮寫TLS),及其前身安全通訊端(Secure Sockets Layer,縮寫SSL)是一種安全協議,目的是為互聯網通信,提供安全及資料完整性保障。

SSL包含記錄層(Record Layer)和傳輸層,記錄層協定決定傳輸層資料的封裝格式。

傳輸層安全協定使用X.509認證,之後利用非對稱加密演算來對通訊方做身分認證,之後交換對稱金鑰作為會談金鑰(Session key)。

這個會談金鑰是用來將通訊兩方交換的資料做加密,確保兩個應用程式間通訊的保密性和可靠性,使客戶與伺服器應用程式之間的通訊不被攻擊者竊聽。

第一步:產生憑證

在設定TLS/SSL 之前需要先拿到對應的簽章證書,設定了JAVA開發環境,可以使用 Java 下面的Keytool 來產生證書,開啟控制台輸入:

keytool -genkey -alias michaelSpica -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore E: \Temp\michaelSpica.p12 -validity 3650

  • -alias 別名(可隨便取)

  • # -storetype 指定金鑰倉庫類型

  • -keyalg 生憑證的演算法名稱,RSA是一種非對稱加密演算法

  • -keysize 憑證大小

  • #-keystore 產生的憑證檔案的儲存路徑(相對路徑或絕對路徑)

  • -validity 憑證的有效期限

##如圖:

SpringBoot中怎麼實現配置SSL的同時支援http和https訪問

##註:正式環境請填入標準值

第二步:取得證書

依照路徑找到產生好的證書,把證書複製到專案裡,如圖:

SpringBoot中怎麼實現配置SSL的同時支援http和https訪問第三個步驟:增加SSL配置

application.yml

中新增如下配置,如圖:

SpringBoot中怎麼實現配置SSL的同時支援http和https訪問第四步:配置https訪問

加入Spring Boot啟動時,讀取配置信息,如

#(註:請加入必要的jar)

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
package com.michael.protocol.config;
import org.apache.catalina.connector.Connector;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * Created by michael on 2019/2/23.
 */
@Configuration
public class TomcatConfig {
    @Value("${server.http.port}")
    private int httpPort;
    @Bean
    public ServletWebServerFactory servletContainer() {
        TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory();
        tomcat.addAdditionalTomcatConnectors(createStandardConnector()); // 添加http
        return tomcat;
    }
    private Connector createStandardConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setPort(httpPort);
        return connector;
    }
}

註:這是spring boot 2.0.X 版本的

至此,所有工作已經完成,啟動項目,如:

SpringBoot中怎麼實現配置SSL的同時支援http和https訪問可以看到兩個端口,說明已經成功,即可透過以下兩種方式進行存取: 

https://localhost:443

 

#http://localhost:80

以上是SpringBoot中怎麼實現配置SSL的同時支援http和https訪問的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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