在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ù)傳輸過程中為加密提供了有限的支持,而HTTPS
則是HTTP
的安全版
本,它在HTTP的基礎(chǔ)上增加了SSL/TLS
協(xié)議,用于在客戶端
和服務(wù)器
之間的數(shù)據(jù)傳輸過程中進(jìn)行加密
,從而提供了更安全
的數(shù)據(jù)傳輸方式。
準(zhǔn)備SSL/TLS證書
HTTPS
需要使用SSL/TLS
證書來確保安全。你可以從證書頒發(fā)機(jī)構(gòu)(CA)
購買證書,也可以使用諸如Let's Encrypt
這樣的服務(wù)免費(fèi)獲得證書,還可以自己生成一個(gè)自簽名的證書
。這里我們以自簽名證書
為例,介紹如何在Spring Boot項(xiàng)目中配置HTTPS。
生成自簽名SSL證書的一種方法是使用Java的keytool
:
keytool -genkey -alias tomcat -keyalg RSA -keystore E:/奇遇少年.keystore
這將生成一個(gè)名為奇遇少年.keystore
的文件放在E盤
根目錄,它將在配置中使用。
將證書放在項(xiàng)目根目錄下
Spring Boot中的配置
有了SSL證書之后,接下來是在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密鑰庫文件路徑 key-store: 奇遇少年.keystore # 密鑰庫中的別名 key-alias: tomcat # 是否啟用SSL enabled: true # 密鑰庫密碼 key-store-password: 123456 # 密鑰庫類型(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)用程序,然后嘗試訪問應(yīng)用程序。
http://localhost/index.html
你應(yīng)該能夠看到應(yīng)用程序現(xiàn)在能夠通過HTTPS服務(wù)請(qǐng)求了。如果嘗試訪問HTTP端口,也應(yīng)該被重定向到HTTPS。
總結(jié)
本文簡要介紹了在Spring Boot項(xiàng)目中啟用HTTPS的步驟,從生成SSL證書開始,到配置Spring Boot。HTTPS是保護(hù)Web應(yīng)用程序安全的基石之一,而Spring Boot則提供了相對(duì)簡易的途徑來配置它。
相關(guān)文章
利用Java獲取文件名、類名、方法名和行號(hào)的方法小結(jié)
這篇文章運(yùn)用實(shí)例代碼給大家介紹了利用Java怎樣獲取文件名、類名、方法名和行號(hào),有需要的可以參考借鑒,下面一起來看看吧。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依賴缺失【踩坑】,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11SpringCloud?Gateway?DispatcherHandler調(diào)用方法詳細(xì)介紹
我們第一個(gè)關(guān)注的類就是DispatcherHandler,這個(gè)類提供的handle()方法,封裝了我們之后所有的handlerMappings,這個(gè)DispatcherHandler有點(diǎn)想SpringMVC的DispatchServlet,里面也是封裝了請(qǐng)求和對(duì)應(yīng)的處理方法的關(guān)系2022-10-10