簡體   English   中英

雙向SSL認證

[英]Two-way mutual SSL authentication

我的任務是在 Spring 啟動 REST API 中實現功能以聯系另一個 ZDB974238714CA8DE634ACE 網絡服務。 外部API采用雙向SSL認證。 我已經獲得了要在我們這邊實施的正確證書,並且我已經實施了 Java 代碼。 但是每當我運行代碼時,我都會收到“收到致命警報:handshake_failure”。 我已經將 jks 密鑰庫加載到 SSLContext 中,如下所示:

FileInputStream truststoreFile = new FileInputStream("/Users/myUser/Desktop/myProject/myProjectName/src/main/resources/keystore-name.jks");
        TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
        KeyStore truststore = KeyStore.getInstance(KeyStore.getDefaultType());
        char[] trustorePassword = "keyStorePassword".toCharArray();
        truststore.load(truststoreFile, trustorePassword);
        trustManagerFactory.init(truststore);
        SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
        KeyManager[] keyManagers = {};//if you have key managers;
        sslContext.init(keyManagers, trustManagerFactory.getTrustManagers(), new SecureRandom());

我是否真的需要配置其他任何東西才能從我們的 API 啟用雙向 SSL,在這種情況下就像我的客戶端一樣? 我想我可以喜歡證書密鑰庫和 go。 但也許我需要做其他事情來啟用它?

您在錯誤的上下文中使用了與您共享的文件。 該文件是包含客戶端證書和相應密鑰的密鑰庫。

TrustStore - 告訴客戶(您)應該信任哪些 CA。

密鑰庫 - 告訴服務器有關客戶端(您)的信息。

為了使雙向 TLS 握手能夠通過,您需要加載 Keystore 並在 KeyManager 中進行設置,如下所示。

// Load the Keystore
KeyStore keyStore = KeyStore.getInstance("JKS");
InputStream keystoreStream = new FileInputStream(pathToJKSFile);
keyStore.load(keystoreStream, keystorePassword.toCharArray());

// Add Keystore to KeyManager
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(keyStore, keystorePassword.toCharArray());

// Create SSLContext with KeyManager and TrustManager
SSLContext context = SSLContext.getInstance("TLS");
context.init(keyManagerFactory.getKeyManagers(), null, new SecureRandom());
SSLSocketFactory sslSocketFactory = context.getSocketFactory();

// Now, use this SSLSocketFactory while making the HTTPS request

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM