欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot對SSL的支持實現

 更新時間:2024年08月22日 09:49:04   作者:聽海邊濤聲  
本文主要介紹了SpringBoot對SSL的支持實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

Spring Boot 提供了配置 SSL 信任材料的能力,這些材料可以應用于多種類型的連接,以支持安全通信??梢允褂靡?nbsp;spring.ssl.bundle 為前綴的配置屬性來指定命名的信任材料集和相關信息。

https://docs.spring.io/spring-boot/docs/3.2.0/reference/htmlsingle/#features.ssl

使用 Java KeyStore 文件配置 SSL

可以使用以 spring.ssl.bundle.jks 為前綴的配置屬性來配置使用 Java keytool 實用程序創(chuàng)建的信任材料包,并將這些包存儲在 JKS 或 PKCS12 格式的 Java KeyStore 文件中。每個包都有一個用戶提供的名稱,可用于引用該包。

當用于保護嵌入式 Web 服務器時,通常會將keystore 配置為包含證書和私鑰的 Java KeyStore,如下所示:

spring.ssl.bundle.jks.mybundle.key.alias=application
spring.ssl.bundle.jks.mybundle.keystore.location=classpath:application.p12
spring.ssl.bundle.jks.mybundle.keystore.password=secret
spring.ssl.bundle.jks.mybundle.keystore.type=PKCS12

當用于保護客戶端連接時,通常會將truststore 配置為包含服務器證書的 Java KeyStore,如下所示:

spring.ssl.bundle.jks.mybundle.truststore.location=classpath:server.p12
spring.ssl.bundle.jks.mybundle.truststore.password=secret

使用 PEM 編碼的證書配置 SSL

可以使用以 spring.ssl.bundle.pem 為前綴的配置屬性來配置以 PEM 編碼文本形式存在的信任材料包。每個包都有一個用戶提供的名稱,可用于引用該包。

當用于保護嵌入式 Web 服務器時,通常會將keystore 配置為包含證書和私鑰,如下所示:

spring.ssl.bundle.pem.mybundle.keystore.certificate=classpath:application.crt
spring.ssl.bundle.pem.mybundle.keystore.private-key=classpath:application.key

當用于保護客戶端連接時,通常會將truststore 配置為包含服務器證書,如下所示:

spring.ssl.bundle.pem.mybundle.truststore.certificate=classpath:server.crt

提示certificate 和private-key屬性可以直接使用 PEM 內容。如果屬性值包含 BEGIN 和 END 標記,則它們將被視為 PEM 內容,而不是資源位置。

以下示例演示了如何定義信任庫證書:

spring.ssl.bundle.pem.mybundle.truststore.certificate=\
-----BEGIN CERTIFICATE-----\n\
MIID1zCCAr+gAwIBAgIUNM5QQv8IzVQsgSmmdPQNaqyzWs4wDQYJKoZIhvcNAQEL\n\
BQAwezELMAkGA1UEBhMCWFgxEjAQBgNVBAgMCVN0YXRlTmFtZTERMA8GA1UEBwwI\n\
...\n\
V0IJjcmYjEZbTvpjFKznvaFiOUv+8L7jHQ1/Yf+9c3C8gSjdUfv88m17pqYXd+Ds\n\
HEmfmNNjht130UyjNCITmLVXyy5p35vWmdf95U3uEbJSnNVtXH8qRmN9oK9mUpDb\n\
ngX6JBJI7fw7tXoqWSLHNiBODM88fUlQSho8\n\
-----END CERTIFICATE-----\n

應用 SSL 包(Applying SSL Bundles)

一旦使用屬性進行配置,就可以在由 Spring Boot 自動配置的各種類型連接的配置屬性中通過名稱引用 SSL 包。

使用 SSL 包(Using SSL Bundles)

Spring Boot 會自動配置一個 SslBundles 類型的 bean,該 bean 可提供對使用 spring.ssl.bundle 屬性配置的每個命名包的訪問。

可以從自動配置的 SslBundles bean 中檢索 SslBundle,并使用它來創(chuàng)建用于在客戶端庫中配置 SSL 連接的對象。SslBundle 提供了一種分層的方法來獲取這些 SSL 對象:

  • getStores() 可用于訪問密鑰庫和信任庫的 java.security.KeyStore 實例,以及任何所需的密鑰庫密碼。
  • getManagers() 可用于訪問 java.net.ssl.KeyManagerFactory 和java.net.ssl.TrustManagerFactory 實例,以及它們創(chuàng)建的java.net.ssl.KeyManager 和java.net.ssl.TrustManager 數組。
  • createSslContext() 提供了一種便捷的方式來獲取新的 java.net.ssl.SSLContext 實例。

此外,SslBundle 還提供了有關正在使用的密鑰、要使用的協(xié)議以及應應用于 SSL 引擎的任何選項的詳細信息。

以下示例演示了如何檢索 SslBundle 并使用它來創(chuàng)建 SSLContext

import javax.net.ssl.SSLContext;

import org.springframework.boot.ssl.SslBundle;
import org.springframework.boot.ssl.SslBundles;
import org.springframework.stereotype.Component;

@Component
public class MyComponent {

    public MyComponent(SslBundles sslBundles) {
        SslBundle sslBundle = sslBundles.getBundle("mybundle");
        SSLContext sslContext = sslBundle.createSslContext();
        // do something with the created sslContext
    }

}

重新加載 SSL 包(Reloading SSL bundles)

當密鑰材料發(fā)生更改時,可以重新加載 SSL 包。使用包的組件必須與可重新加載的 SSL 包兼容。目前,以下組件與此兼容:

  • Tomcat Web 服務器
  • Netty Web 服務器

要啟用重新加載,你需要通過以下示例中的配置屬性進行選擇:

spring.ssl.bundle.pem.mybundle.reload-on-update=true
spring.ssl.bundle.pem.mybundle.keystore.certificate=file:/some/directory/application.crt
spring.ssl.bundle.pem.mybundle.keystore.private-key=file:/some/directory/application.key

然后,文件監(jiān)視器將監(jiān)視這些文件,如果文件發(fā)生更改,將重新加載 SSL 包。這反過來會觸發(fā)使用組件的重新加載,例如,Tomcat 將對啟用 SSL 的連接器中的證書進行輪換。

你可以使用 spring.ssl.bundle.watch.file.quiet-period 屬性來配置文件監(jiān)視器的靜默期(以確保沒有更多更改)。

到此這篇關于SpringBoot對SSL的支持實現的文章就介紹到這了,更多相關SpringBoot SSL內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java實現控制臺輸出兩點間距離

    Java實現控制臺輸出兩點間距離

    這篇文章主要介紹了Java實現控制臺輸出兩點間距離,涉及了部分編程坐標的問題,具有一定參考價值,需要的朋友可以了解下
    2017-09-09
  • SpringCloud微服務剔除下線功能實現原理分析

    SpringCloud微服務剔除下線功能實現原理分析

    SpringCloud是一種微服務的框架,利用它我們可以去做分布式服務開發(fā),這篇文章主要介紹了SpringCloud微服務剔除下線功能,需要的朋友可以參考下
    2022-11-11
  • AbstractQueuedSynchronizer(AQS)鎖狀態(tài)同步和排隊管理

    AbstractQueuedSynchronizer(AQS)鎖狀態(tài)同步和排隊管理

    這篇文章主要介紹了為大家AbstractQueuedSynchronizer(AQS)鎖狀態(tài)同步和排隊管理源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • springmvc4+hibernate4分頁查詢功能實現

    springmvc4+hibernate4分頁查詢功能實現

    本篇文章主要介紹了springmvc4+hibernate4分頁查詢功能實現,Springmvc+hibernate成為現在很多人用的框架整合,有興趣的可以了解一下。
    2017-01-01
  • 解決java.sql.Timestamp丟失精度的問題

    解決java.sql.Timestamp丟失精度的問題

    這篇文章主要介紹了解決java.sql.Timestamp丟失精度的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java刪除ArrayList中的重復元素的兩種方法

    Java刪除ArrayList中的重復元素的兩種方法

    在Java編程中,ArrayList是一種常用的集合類,它允許我們存儲一組元素,在某些情況下,我們可能需要移除其中重復的元素,只保留唯一的元素,下面介紹兩種常見的刪除ArrayList中重復元素的方法,需要的朋友可以參考下
    2024-12-12
  • SpringMVC中Controller層獲取前端請求參數的方式匯總

    SpringMVC中Controller層獲取前端請求參數的方式匯總

    這篇文章主要介紹了SpringMVC中Controller層獲取前端請求參數的幾種方式,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • 使用Apache Spark進行Java數據分析的步驟詳解

    使用Apache Spark進行Java數據分析的步驟詳解

    今天我們將探討如何使用Apache Spark進行Java數據分析,Apache Spark是一個強大的大數據處理引擎,它支持批處理和流處理,特別適合處理大規(guī)模數據集,在Java中使用Spark,我們可以利用其強大的數據處理能力來進行各種數據分析任務,需要的朋友可以參考下
    2024-07-07
  • 半小時實現Java手擼網絡爬蟲框架(附完整源碼)

    半小時實現Java手擼網絡爬蟲框架(附完整源碼)

    最近在做一個搜索相關的項目,需要爬取網絡上的一些鏈接存儲到索引庫中,自己寫了一個簡單的網絡爬蟲,感興趣的可以了解一下
    2021-06-06
  • java volatile關鍵字的含義詳細介紹

    java volatile關鍵字的含義詳細介紹

    這篇文章主要介紹了java volatile關鍵字的含義詳解的相關資料,需要的朋友可以參考下
    2016-12-12

最新評論