如何在SpringBoot中設定TLS? |Baeldung
安全通訊在現代應用程式中起著重要作用。客戶端和伺服器之間透過純HTTP進行的通訊不安全。對於可用於生產的應用程式,我們應在應用程式中透過TLS(傳輸層安全性)協議啟用HTTPS。在本教程中,我們將討論如何在Spring Boot應用程式中啟用TLS技術。
1.生成金鑰對
要啟用TLS,我們需要建立一個公共/私有金鑰對。為此,我們使用keytool。該金鑰工具命令自帶預設的Java分佈。讓我們使用keytool生成金鑰對並將其儲存在keystore.p12檔案中:
keytool -genkeypair -alias baeldung -keyalg RSA -keysize 4096 \ -validity 3650 -dname "CN=localhost" -keypass changeit -keystore keystore.p12 \ -storeType PKCS12 -storepass changeit |
金鑰庫檔案可以在不同的格式。兩種最受歡迎的格式是Java KeyStore(JKS)和PKCS#12。JKS特定於Java,而PKCS#12是一種行業標準格式,屬於在公共金鑰密碼術標準(PKCS)下定義的一系列標準。
2.在Spring中配置單向TLS
讓我們從配置單向TLS開始。我們在application.properties檔案中配置與TLS相關的屬性:
# enable/disable https server.ssl.enabled=true # keystore format server.ssl.key-store-type=PKCS12 # keystore location server.ssl.key-store=classpath:keystore/keystore.p12 # keystore password server.ssl.key-store-password=changeit |
在配置SSL協議時,我們將使用TLS,並告訴伺服器使用TLS 1.2:
# SSL protocol to use server.ssl.protocol=TLS # Enabled SSL protocols server.ssl.enabled-protocols=TLSv1.2 |
為了驗證一切正常,我們只需要執行Spring Boot應用程式即可。
3.在Spring中配置雙向mTLS
為了啟用mTLS,我們將client-auth屬性配置need值:
server.ssl.client-auth=need |
當我們使用need值時,客戶端身份驗證就是必需的,也是強制性的。這意味著客戶端和伺服器都必須共享其公共證照。為了將客戶端的證照儲存在Spring Boot應用程式中,我們使用truststore檔案並在application.properties檔案中對其進行配置:
trust store location server.ssl.trust-store=classpath:keystore/truststore.p12 trust store password server.ssl.trust-store-password=changeit |
trust-store指向的位置路徑是一個檔案,該檔案包含計算機為SSL伺服器身份驗證所信任的證照頒發機構的列表。需要trust-store-password才能訪問的密碼信任檔案。
4.在Tomcat中配置TLS
預設情況下,啟動Tomcat時將使用沒有任何TLS功能的HTTP協議。為了在Tomcat中啟用TLS,我們配置server.xml檔案:
<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="8443" maxThreads="200" scheme="https" secure="true" SSLEnabled="true" keystoreFile="${user.home}/.keystore" keystorePass="changeit" clientAuth="false" sslProtocol="TLS" sslEnabledProtocols="TLSv1.2"/> |
為了啟用mTLS,我們將設定clientAuth =“ true”。
5.呼叫HTTPS API
curl -v http://localhost:8443/baeldung
由於我們未指定https,因此將輸出錯誤.透過使用https協議可以解決此問題:
curl -v https://localhost:8443/baeldung
但是,這給了我們另一個錯誤:
SSL certificate problem: self signed certificate
當我們使用自簽名證照時,會發生這種情況。要解決此問題,我們必須在客戶端請求中使用伺服器證照。首先,我們將從伺服器金鑰庫檔案中複製伺服器證照baeldung.cer。然後,我們將在curl請求中使用伺服器證照以及–cacert選項:
curl --cacert baeldung.cer https://localhost:8443/baeldung
相關文章
- 如何在Apache HttpClient中設定TLS版本ApacheHTTPclientTLS
- 如何在 Elasticsearch 中配置 SSL / TLS ?ElasticsearchTLS
- 在Spring Boot設定Swagger 2 - BaeldungSpring BootSwagger
- 如何在YAML中為POJO中Map配置資料? | BaeldungYAMLPOJO
- Springboot Eclipse Debug設定無效,解決方法三步如文Spring BootEclipse
- win10電腦 tls安全設定怎麼設定為預設設定Win10TLS
- 如何在Apple Mail中設定外出答覆APPAI
- 如何在 Ubuntu Linux 中設定或更改時區UbuntuLinux
- 如何在 Sway 中設定多個顯示器
- 如何在MacOS中設定共享檔案協議?Mac協議
- 如何在SpringBoot中清除所有快取 ?Spring Boot快取
- 如何在 Linux 中顯示和設定主機名?Linux
- 教你如何在Linux中設定快捷方式圖示Linux
- 如何在 Fedora 30 中設定核心命令列引數命令列
- 如何在 Nuxt 中動態設定頁面佈局UX
- 如何在Mitti中設定Matrox Dual / TripleHead2Go?MITGo
- springboot設定UTF-8Spring Boot
- mutual-tls-ssl: 為Java伺服器和客戶端設定 SSL/TLS 的分步指南TLSJava伺服器客戶端
- dhtmlxGantt如何在DHTMLX Gantt中設定資源管理選項HTML
- 如何在 Linux Shell 程式設計中定義和使用函式Linux程式設計函式
- SpringBoot 專案如何在tomcat容器中執行Spring BootTomcat
- 如何在Spring中使用JobRunr實現後臺作業? - BaeldungSpring
- springboot中圖示的定製Spring Boot
- 如何在Linux系統中設定Boost庫的環境變數?Linux變數
- 如何在 Linux 最小化安裝中設定網際網路Linux
- 如何在 Ubuntu 上設定時間同步Ubuntu
- 如何在ubuntu上設定清華源Ubuntu
- 如何在Mac桌面設定快捷方式?Mac
- 如何在Mac 上設定虛擬 VPNMac
- 微服務中的Saga模式 - baeldung微服務模式
- 如何在SpringBoot中整合JWT(JSON Web Token)鑑權Spring BootJWTJSONWeb
- SpringBoot的repackage和Maven打包命令之間的區別 - BaeldungSpring BootPackageMaven
- java中SpringBoot定時器註解JavaSpring Boot定時器
- 如何在 openSUSE 中使用 Zypper Configuration 設定代理
- 如何在Mac上設定韌體密碼Mac密碼
- 如何在極狐GitLab 自定義 Pages 域名、SSL/TLS 證書GitlabTLS
- 如何在Nginx不繫結域名下使用SSL/TLS證書?NginxTLS
- UE4 如何在導航體積中設定不可通過的地方