SpringBoot配置SSL同時支持http和https訪問實(shí)現(xiàn)
傳輸層安全性協(xié)議(英語:Transport Layer Security,縮寫作 TLS),及其前身安全套接層(Secure Sockets Layer,縮寫作 SSL)是一種安全協(xié)議,目的是為互聯(lián)網(wǎng)通信,提供安全及數(shù)據(jù)完整性保障。
SSL包含記錄層(Record Layer)和傳輸層,記錄層協(xié)議確定傳輸層數(shù)據(jù)的封裝格式。傳輸層安全協(xié)議使用X.509認(rèn)證,之后利用非對稱加密演算來對通信方做身份認(rèn)證,之后交換對稱密鑰作為會談密鑰(Session key)。
這個會談密鑰是用來將通信兩方交換的數(shù)據(jù)做加密,保證兩個應(yīng)用間通信的保密性和可靠性,使客戶與服務(wù)器應(yīng)用之間的通信不被攻擊者竊聽。
第一步:生成證書
在配置 TLS/SSL 之前需要先拿到相應(yīng)的簽名證書,配置了JAVA開發(fā)環(huán)境,可以使用 Java 下面的 Keytool 來生成證書,打開控制臺輸入:
keytool -genkey -alias michaelSpica -storetype PKCS12 -keyalg RSA -keysize 2048 -keystore E:\Temp\michaelSpica.p12 -validity 3650
- -alias 別名(可隨便?。?/li>
- -storetype 指定密鑰倉庫類型
- -keyalg 生證書的算法名稱,RSA是一種非對稱加密算法
- -keysize 證書大小
- -keystore 生成的證書文件的存儲路徑(相對路徑或絕對路徑)
- -validity 證書的有效期
如圖:
注:正式環(huán)境中請?zhí)顚憳?biāo)準(zhǔn)值
第二步:獲取證書
根據(jù)路徑找到生成好的證書,把證書復(fù)制到項(xiàng)目里,如圖:
第三步:增加SSL配置
在 application.yml 中添加如下配置,如圖:
第四步:配置https訪問
添加Spring Boot啟動時,讀取配置信息,如
(注:請?zhí)砑颖匾膉ar)
<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 版本的
至此,所有工作已經(jīng)完成,啟動項(xiàng)目,如:
可以看到兩個端口,說明已經(jīng)成功,即可通過以下兩種方式進(jìn)行訪問:
https://localhost:443
http://localhost:80
到此這篇關(guān)于SpringBoot配置SSL同時支持http和https訪問實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot SSL支持http和https內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java中使用Files.readLines()處理文本中行數(shù)據(jù)方式
這篇文章主要介紹了java中使用Files.readLines()處理文本中行數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12詳解Java如何通過裝飾器模式擴(kuò)展系統(tǒng)功能
這篇文章主要為大家詳細(xì)介紹了Java如何通過裝飾器模式擴(kuò)展系統(tǒng)功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-04-04Java爬蟲Jsoup+httpclient獲取動態(tài)生成的數(shù)據(jù)
這篇文章主要介紹了Java爬蟲Jsoup+httpclient獲取動態(tài)生成的數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2017-05-05Java運(yùn)行時數(shù)據(jù)區(qū)概述詳解
這篇文章主要介紹了Java運(yùn)行時數(shù)據(jù)區(qū)概述,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03Spring集成Druid連接池及監(jiān)控配置的全過程
java程序很大一部分要操作數(shù)據(jù)庫,為了提高性能操作數(shù)據(jù)庫的時候,有不得不使用數(shù)據(jù)庫連接池,下面這篇文章主要給大家介紹了關(guān)于Spring集成Druid連接池及監(jiān)控配置的相關(guān)資料,需要的朋友可以參考下2021-09-09