傳輸層安全性協定(英文: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
憑證的有效期限
第二步:取得證書
第三個步驟:增加SSL配置
中新增如下配置,如圖:
第四步:配置https訪問
<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;
}
}
至此,所有工作已經完成,啟動項目,如:
可以看到兩個端口,說明已經成功,即可透過以下兩種方式進行存取:
https://localhost:443#http://localhost:80
以上是SpringBoot中怎麼實現配置SSL的同時支援http和https訪問的詳細內容。更多資訊請關注PHP中文網其他相關文章!