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

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

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

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

一、生成自簽名CA證書(shū)

生成CA密鑰對(duì)和自簽名證書(shū)

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 證書(shū)的別名。
  • -keystore ca.jks:生成的密鑰庫(kù)文件(包含CA密鑰對(duì)和證書(shū))。
  • -storepass-keypass:密鑰庫(kù)和密鑰的密碼。
  • -dname:證書(shū)的 Distinguished Name(DN)。
  • -ext bc:c:將證書(shū)標(biāo)記為 CA 證書(shū)。

導(dǎo)出CA證書(shū)

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

-file ca.crt:導(dǎo)出的 CA 證書(shū)文件。

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

生成服務(wù)器密鑰對(duì)

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:服務(wù)器證書(shū)的別名。
  • -keystore server.jks:生成的服務(wù)器密鑰庫(kù)文件。

生成證書(shū)簽名請(qǐng)求(CSR)

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

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

使用CA簽發(fā)服務(wù)器證書(shū)

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ā)的服務(wù)器證書(shū)文件。
  • -ext SAN=dns:server.example.com:可選,添加 Subject Alternative Name(SAN)。

將CA證書(shū)和服務(wù)器證書(shū)導(dǎo)入服務(wù)器密鑰庫(kù)

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

先導(dǎo)入 CA 證書(shū),再導(dǎo)入簽發(fā)的服務(wù)器證書(shū)。

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

生成客戶(hù)端密鑰對(duì)

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:客戶(hù)端證書(shū)的別名。
  • -keystore client.jks:生成的客戶(hù)端密鑰庫(kù)文件。

生成證書(shū)簽名請(qǐng)求(CSR)

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

使用CA簽發(fā)客戶(hù)端證書(shū)

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ā)的客戶(hù)端證書(shū)文件。

將CA證書(shū)和客戶(hù)端證書(shū)導(dǎo)入客戶(hù)端密鑰庫(kù)

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

先導(dǎo)入 CA 證書(shū),再導(dǎo)入簽發(fā)的客戶(hù)端證書(shū)。

四、配置信任庫(kù)

創(chuàng)建信任庫(kù)并導(dǎo)入CA證書(shū)

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

五、配置服務(wù)器和客戶(hù)端

1. 服務(wù)器配置

在 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 # 要求客戶(hù)端提供證書(shū)

2. 客戶(hù)端配置

在 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 證書(shū)、服務(wù)器證書(shū)和客戶(hù)端證書(shū)。
  • 只需要將 CA 證書(shū)添加到信任庫(kù)(truststore.jks),即可驗(yàn)證所有由該 CA 簽發(fā)的證書(shū)。
  • 這種方法適合 Java 生態(tài)系統(tǒng),尤其是使用 JKS 密鑰庫(kù)和信任庫(kù)的場(chǎng)景。

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

相關(guān)文章

  • Spring Mvc中攔截器Interceptor用法解讀

    Spring Mvc中攔截器Interceptor用法解讀

    這篇文章主要介紹了Spring Mvc中攔截器Interceptor用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • 詳解Java中PriorityQueue的作用和源碼實(shí)現(xiàn)

    詳解Java中PriorityQueue的作用和源碼實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了Java中阻塞隊(duì)列PriorityQueue的作用和源碼實(shí)現(xiàn)的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),需要的小伙伴可以了解下
    2024-02-02
  • java變量的聲明與賦值分離規(guī)范示例

    java變量的聲明與賦值分離規(guī)范示例

    這篇文章主要為大家介紹了java變量的聲明與賦值分離規(guī)范示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • springboot整合redis之消息隊(duì)列

    springboot整合redis之消息隊(duì)列

    本文主要介紹了springboot整合redis之消息隊(duì)列,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Java國(guó)密加密SM2代碼詳細(xì)使用步驟

    Java國(guó)密加密SM2代碼詳細(xì)使用步驟

    SM2算法可以用較少的計(jì)算能力提供比RSA算法更高的安全強(qiáng)度,而所需的密鑰長(zhǎng)度卻遠(yuǎn)比RSA算法低,下面這篇文章主要給大家介紹了關(guān)于Java國(guó)密加密SM2代碼的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • spring boot 如何指定profile啟動(dòng)

    spring boot 如何指定profile啟動(dòng)

    這篇文章主要介紹了spring boot 如何指定profile啟動(dòng)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 基于Jenkins搭建.NET FrameWork持續(xù)集成環(huán)境

    基于Jenkins搭建.NET FrameWork持續(xù)集成環(huán)境

    這篇文章主要介紹了基于Jenkins搭建.NET FrameWork持續(xù)集成環(huán)境,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 手?jǐn)]一個(gè) spring-boot-starter的全過(guò)程

    手?jǐn)]一個(gè) spring-boot-starter的全過(guò)程

    這篇文章主要介紹了手?jǐn)]一個(gè) spring-boot-starter的全過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Spring Cloud動(dòng)態(tài)配置刷新RefreshScope使用示例詳解

    Spring Cloud動(dòng)態(tài)配置刷新RefreshScope使用示例詳解

    這篇文章主要為大家介紹了Spring Cloud動(dòng)態(tài)配置刷新RefreshScope使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Java多線(xiàn)程中的Executor詳解

    Java多線(xiàn)程中的Executor詳解

    這篇文章主要介紹了Java多線(xiàn)程中的Executor詳解,該接口提供了一種將任務(wù)提交與如何運(yùn)行每個(gè)任務(wù)的機(jī)制(包括線(xiàn)程使用、調(diào)度等細(xì)節(jié))解耦的方法,它通常使用預(yù)先創(chuàng)建線(xiàn)程而不是創(chuàng)建線(xiàn)程,需要的朋友可以參考下
    2023-12-12

最新評(píng)論