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