在Spring?Boot中啟用HTTPS的方法
在Spring Boot中啟用HTTPS是一個(gè)增強(qiáng)應(yīng)用程序安全性的重要步驟。下面我將介紹如何將一個(gè)Spring Boot項(xiàng)目配置成支持HTTPS協(xié)議。
引入
在現(xiàn)代的網(wǎng)絡(luò)通信中,安全性成為了一個(gè)不能忽視的要求。特別是當(dāng)我們談?wù)摰綌?shù)據(jù)傳輸時(shí),保護(hù)用戶信息的安全性是非常重要的。HTTP協(xié)議
在數(shù)據(jù)傳輸過(guò)程中為加密提供了有限的支持,而HTTPS
則是HTTP
的安全版
本,它在HTTP的基礎(chǔ)上增加了SSL/TLS
協(xié)議,用于在客戶端
和服務(wù)器
之間的數(shù)據(jù)傳輸過(guò)程中進(jìn)行加密
,從而提供了更安全
的數(shù)據(jù)傳輸方式。
準(zhǔn)備SSL/TLS證書(shū)
HTTPS
需要使用SSL/TLS
證書(shū)來(lái)確保安全。你可以從證書(shū)頒發(fā)機(jī)構(gòu)(CA)
購(gòu)買(mǎi)證書(shū),也可以使用諸如Let's Encrypt
這樣的服務(wù)免費(fèi)獲得證書(shū),還可以自己生成一個(gè)自簽名的證書(shū)
。這里我們以自簽名證書(shū)
為例,介紹如何在Spring Boot項(xiàng)目中配置HTTPS。
生成自簽名SSL證書(shū)的一種方法是使用Java的keytool
:
keytool -genkey -alias tomcat -keyalg RSA -keystore E:/奇遇少年.keystore
這將生成一個(gè)名為奇遇少年.keystore
的文件放在E盤(pán)
根目錄,它將在配置中使用。
將證書(shū)放在項(xiàng)目根目錄下
Spring Boot中的配置
有了SSL證書(shū)之后,接下來(lái)是在Spring Boot中進(jìn)行配置,以便應(yīng)用程序能夠使用HTTPS。在application.properties
或application.yml
文件中,你需要添加以下配置:
如果是application.yml
:
# HTTP服務(wù)器端口配置 http: port: 80 # 服務(wù)器配置 server: # HTTPS服務(wù)端口配置 port: 443 ssl: # SSL密鑰庫(kù)文件路徑 key-store: 奇遇少年.keystore # 密鑰庫(kù)中的別名 key-alias: tomcat # 是否啟用SSL enabled: true # 密鑰庫(kù)密碼 key-store-password: 123456 # 密鑰庫(kù)類(lèi)型(Java KeyStore) key-store-type: JKS
重定向HTTP到HTTPS
當(dāng)啟用了HTTPS后,你可能還想要將所有HTTP請(qǐng)求重定向到HTTPS。
@Configuration public class HttpsConfig { @Value("${server.port}") private int httpsPort; @Value("${http.port}") private int httpPort; @Bean public ServletWebServerFactory servletContainer() { TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() { @Override protected void postProcessContext(Context context) { // 設(shè)置安全約束 SecurityConstraint securityConstraint = new SecurityConstraint(); securityConstraint.setUserConstraint("CONFIDENTIAL"); // 創(chuàng)建安全集合 SecurityCollection collection = new SecurityCollection(); collection.addPattern("/*"); // 添加安全集合到安全約束 securityConstraint.addCollection(collection); // 添加安全約束到上下文 context.addConstraint(securityConstraint); } }; // 添加HTTP連接器 tomcat.addAdditionalTomcatConnectors(initiateHttpConnector()); return tomcat; } // 初始化HTTP連接器 private Connector initiateHttpConnector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(httpPort); connector.setSecure(false); connector.setRedirectPort(httpsPort); return connector; } }
測(cè)試
配置完成后,啟動(dòng)Spring Boot應(yīng)用程序,然后嘗試訪問(wèn)應(yīng)用程序。
http://localhost/index.html
你應(yīng)該能夠看到應(yīng)用程序現(xiàn)在能夠通過(guò)HTTPS服務(wù)請(qǐng)求了。如果嘗試訪問(wèn)HTTP端口,也應(yīng)該被重定向到HTTPS。
總結(jié)
本文簡(jiǎn)要介紹了在Spring Boot項(xiàng)目中啟用HTTPS的步驟,從生成SSL證書(shū)開(kāi)始,到配置Spring Boot。HTTPS是保護(hù)Web應(yīng)用程序安全的基石之一,而Spring Boot則提供了相對(duì)簡(jiǎn)易的途徑來(lái)配置它。
相關(guān)文章
利用Java獲取文件名、類(lèi)名、方法名和行號(hào)的方法小結(jié)
這篇文章運(yùn)用實(shí)例代碼給大家介紹了利用Java怎樣獲取文件名、類(lèi)名、方法名和行號(hào),有需要的可以參考借鑒,下面一起來(lái)看看吧。2016-08-08Spring實(shí)現(xiàn)上拉刷新和下拉加載效果
這篇文章主要為大家詳細(xì)介紹了Spring實(shí)現(xiàn)上拉刷新和下拉加載效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12java并發(fā)編程之進(jìn)程和線程調(diào)度基礎(chǔ)詳解
這篇文章主要介紹了java并發(fā)編程之進(jìn)程和線程調(diào)度基礎(chǔ),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06springboot2.3之后hibernate-validator依賴缺失【踩坑】
這篇文章主要介紹了springboot2.3之后hibernate-validator依賴缺失【踩坑】,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11用Java程序判斷是否是閏年的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇用Java程序判斷是否是閏年的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-06-06SpringCloud?Gateway?DispatcherHandler調(diào)用方法詳細(xì)介紹
我們第一個(gè)關(guān)注的類(lèi)就是DispatcherHandler,這個(gè)類(lèi)提供的handle()方法,封裝了我們之后所有的handlerMappings,這個(gè)DispatcherHandler有點(diǎn)想SpringMVC的DispatchServlet,里面也是封裝了請(qǐng)求和對(duì)應(yīng)的處理方法的關(guān)系2022-10-10