最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Springboot實現(xiàn)TLS雙向認證的方法

 更新時間:2025年02月08日 14:35:31   作者:圓圓同學  
本文介紹了使用keytool生成和管理自簽名CA證書、服務器證書和客戶端證書的方法,適合Java生態(tài)系統(tǒng),通過配置信任庫和服務器/客戶端配置,實現(xiàn)了Spring Boot中的TLS雙向認證,感興趣的朋友一起看看吧

keytool 是 Java 自帶的工具,適合與 JKS 密鑰庫和信任庫一起使用。

一、生成自簽名CA證書

生成CA密鑰對和自簽名證書

keytool -genkeypair -alias my-ca -keyalg RSA -keysize 2048 -validity 3650 -keystore ca.jks -storepass changeit -keypass changeit -dname "CN=My CA, OU=My Organization, O=My Company, L=My City, ST=My State, C=US" -ext bc:c

  • -alias my-ca:CA 證書的別名。
  • -keystore ca.jks:生成的密鑰庫文件(包含CA密鑰對和證書)。
  • -storepass-keypass:密鑰庫和密鑰的密碼。
  • -dname:證書的 Distinguished Name(DN)。
  • -ext bc:c:將證書標記為 CA 證書。

導出CA證書

keytool -exportcert -alias my-ca -keystore ca.jks -storepass changeit -file ca.crt

-file ca.crt:導出的 CA 證書文件。

二、使用CA簽發(fā)服務器證書

生成服務器密鑰對

keytool -genkeypair -alias server -keyalg RSA -keysize 2048 -validity 365 -keystore server.jks -storepass changeit -keypass changeit -dname "CN=server.example.com, OU=My Organization, O=My Company, L=My City, ST=My State, C=US"

  • -alias server:服務器證書的別名。
  • -keystore server.jks:生成的服務器密鑰庫文件。

生成證書簽名請求(CSR)

keytool -certreq -alias server -keystore server.jks -storepass changeit -file server.csr

  • -file server.csr:生成的 CSR 文件。

使用CA簽發(fā)服務器證書

keytool -gencert -alias my-ca -infile server.csr -outfile server.crt -keystore ca.jks -storepass changeit -validity 365 -ext SAN=dns:server.example.com

  • -infile server.csr:輸入的 CSR 文件。
  • -outfile server.crt:簽發(fā)的服務器證書文件。
  • -ext SAN=dns:server.example.com:可選,添加 Subject Alternative Name(SAN)。

將CA證書和服務器證書導入服務器密鑰庫

keytool -importcert -alias my-ca -file ca.crt -keystore server.jks -storepass changeit -noprompt
keytool -importcert -alias server -file server.crt -keystore server.jks -storepass changeit

先導入 CA 證書,再導入簽發(fā)的服務器證書。

三、使用CA簽發(fā)客戶端證書

生成客戶端密鑰對

keytool -genkeypair -alias client -keyalg RSA -keysize 2048 -validity 365 -keystore client.jks -storepass changeit -keypass changeit -dname "CN=client.example.com, OU=My Organization, O=My Company, L=My City, ST=My State, C=US"

  • -alias client:客戶端證書的別名。
  • -keystore client.jks:生成的客戶端密鑰庫文件。

生成證書簽名請求(CSR)

keytool -certreq -alias client -keystore client.jks -storepass changeit -file client.csr
  • -file client.csr:生成的 CSR 文件。

使用CA簽發(fā)客戶端證書

keytool -gencert -alias my-ca -infile client.csr -outfile client.crt -keystore ca.jks -storepass changeit -validity 365
  • -infile client.csr:輸入的 CSR 文件。
  • -outfile client.crt:簽發(fā)的客戶端證書文件。

將CA證書和客戶端證書導入客戶端密鑰庫

keytool -importcert -alias my-ca -file ca.crt -keystore client.jks -storepass changeit -noprompt
keytool -importcert -alias client -file client.crt -keystore client.jks -storepass changeit

先導入 CA 證書,再導入簽發(fā)的客戶端證書。

四、配置信任庫

創(chuàng)建信任庫并導入CA證書

keytool -importcert -alias my-ca -file ca.crt -keystore truststore.jks -storepass changeit -noprompt
  • -keystore truststore.jks:生成的信任庫文件。

五、配置服務器和客戶端

1. 服務器配置

在 Spring Boot 中配置:

server:
  ssl:
    key-store: classpath:server.jks
    key-store-password: changeit
    key-alias: server
    trust-store: classpath:truststore.jks
    trust-store-password: changeit
    client-auth: need # 要求客戶端提供證書

2. 客戶端配置

在 Java 中配置:

SSLContext sslContext = SSLContextBuilder.create()
        .loadKeyMaterial(Paths.get("client.jks"), "changeit".toCharArray(), "changeit".toCharArray())
        .loadTrustMaterial(Paths.get("truststore.jks"), "changeit".toCharArray())
        .build();
HttpClient client = HttpClients.custom()
        .setSSLContext(sslContext)
        .build();

六、總結(jié)

  • 使用 keytool 可以完全替代 openssl,生成和管理自簽名 CA 證書、服務器證書和客戶端證書。
  • 只需要將 CA 證書添加到信任庫(truststore.jks),即可驗證所有由該 CA 簽發(fā)的證書。
  • 這種方法適合 Java 生態(tài)系統(tǒng),尤其是使用 JKS 密鑰庫和信任庫的場景。

到此這篇關于Springboot實現(xiàn)TLS雙向認證的文章就介紹到這了,更多相關Springboot TLS雙向認證內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java獲取當前時間方法總結(jié)

    Java獲取當前時間方法總結(jié)

    本篇文章給大家整理了關于Java獲取當前時間方法,以及相關代碼分享,有需要的朋友測試參考下吧。
    2018-02-02
  • Java類加載器ClassLoader源碼層面分析講解

    Java類加載器ClassLoader源碼層面分析講解

    ClassLoader翻譯過來就是類加載器,普通的java開發(fā)者其實用到的不多,但對于某些框架開發(fā)者來說卻非常常見。理解ClassLoader的加載機制,也有利于我們編寫出更高效的代碼。ClassLoader的具體作用就是將class文件加載到jvm虛擬機中去,程序就可以正確運行了
    2022-09-09
  • Java接口繼承和使用接口操作示例

    Java接口繼承和使用接口操作示例

    這篇文章主要介紹了Java接口繼承和使用接口操作,結(jié)合具體實例形式分析了Java接口繼承與使用的相關原理、操作技巧與注意事項,需要的朋友可以參考下
    2019-09-09
  • SpringBoot的@ControllerAdvice處理全局異常詳解

    SpringBoot的@ControllerAdvice處理全局異常詳解

    這篇文章主要介紹了SpringBoot的@ControllerAdvice處理全局異常詳解,但有時卻往往會產(chǎn)生一些bug,這時候就破壞了返回數(shù)據(jù)的一致性,導致調(diào)用者無法解析,所以我們常常會定義一個全局的異常攔截器,需要的朋友可以參考下
    2024-01-01
  • mybatis 解決將數(shù)值0識別成空字符串的問題

    mybatis 解決將數(shù)值0識別成空字符串的問題

    這篇文章主要介紹了mybatis 解決將數(shù)值0識別成空字符串的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • Java之Spring Bean 作用域和生命周期

    Java之Spring Bean 作用域和生命周期

    這篇文章主要介紹了Java Bean的作用域和生命周期,Bean 的作用域是指 Bean 在 Spring 整個框架中的某種行為模式,所謂的?命周期指的是?個對象從誕?到銷毀的整個?命過程,我們把這個過程就叫做?個對象的?命周期,感興趣的同學可以參考閱讀
    2023-04-04
  • Spring中的@ComponentScan注解使用詳解

    Spring中的@ComponentScan注解使用詳解

    這篇文章主要介紹了Spring中的@ComponentScan注解使用詳解,@ComponentScan 注解的作用就是根據(jù)指定的掃描路徑,把路徑中符合掃描規(guī)則的類裝配到 Spring 容器中,需要的朋友可以參考下
    2024-01-01
  • SpringBoot優(yōu)雅的進行全局異常處理的實現(xiàn)步驟

    SpringBoot優(yōu)雅的進行全局異常處理的實現(xiàn)步驟

    在軟件開發(fā)的世界里,異常處理是保證系統(tǒng)穩(wěn)定性和用戶體驗的關鍵因素之一,尤其是在構(gòu)建基于微服務架構(gòu)的應用時,SpringBoot提供了一套強大的工具來幫助開發(fā)者管理這些異常,所以本文給大家介紹了SpringBoot如何優(yōu)雅的進行全局異常處理,需要的朋友可以參考下
    2025-02-02
  • IntelliJ IDEA Java項目手動添加依賴 jar 包的方法(圖解)

    IntelliJ IDEA Java項目手動添加依賴 jar 包的方法(圖解)

    這篇文章主要介紹了IntelliJ IDEA Java項目手動添加依賴 jar 包,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • SpringMVC攔截器超詳細解讀

    SpringMVC攔截器超詳細解讀

    SpringMVC的處理器攔截器,類似于Servlet開發(fā)中的過濾器Filter,用于對處理器進行預處理和后處理。?依賴于web框架,在實現(xiàn)上基于Java的反射機制,屬于面向切面編程(AOP)的一種運用
    2022-07-07

最新評論

榕江县| SHOW| 汕尾市| 江北区| 井研县| 台前县| 静安区| 精河县| 新河县| 江油市| 班戈县| 高邮市| 樟树市| 牟定县| 高阳县| 湾仔区| 大同市| 临泉县| 锡林浩特市| 莫力| 新竹县| 澳门| 叶城县| 台中市| 洛隆县| 娄底市| 小金县| 天长市| 张掖市| 九龙坡区| 舒兰市| 潢川县| 梅州市| 民县| 上高县| 哈密市| 班戈县| 沈阳市| 永福县| 涟源市| 武山县|