我們有5個客戶,有5個CRT檔案和一個單一的spring boot應用程式來管理與第三方API的SSL通信。
將一個CRT配置到keystore中,我們可以與第三方API進行完美的通信。
現在的問題是,我們能否使用 Bouncy Castle 來動態地存盤和使用這 5 個 CRT 檔案? 另外,它們是否可以通過編程來存盤?
如果不能,有什么其他方法嗎? 我們正在使用RestTemplate進行連接。
uj5u.com熱心網友回復:
請查看Java Keystore API。你在這里有一個關于如何以編程方式管理鑰匙庫的詳細解釋。 Java Keystore API使用示例
uj5u.com熱心網友回復:
你可以試試這個代碼。請注意,創建RestTemplate是很耗時的,所以你應該為你的5個連接創建5個RestTemplate豆子,之后只需消耗它們。在任何情況下,它們都是執行緒安全的。
import org.apache.http.client.HttpClient。
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.ssl.SSLContextBuilder;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
----------------------------------------------------------------------
SSLContext sslContext = SSLContextBuilder.create()
.loadKeyMaterial( file_jks, password) //你的.jks檔案的路徑及其密碼。
//(它也可以是.p12),。
//注意這個方法很重要,如果
// SERVER期望你的CLIENT證書用于連接。
//它也被稱為2-way-ssl。
.loadTrustMaterial( file_jks , password) //path yo your .jks file with its password.
//(同樣,它可以是.p12)。
//你將使用這種方法,如果SERVER有即自簽名的證書。
//或任何其他不被CA信任的證書。
.setProtocol("TLS1.2")
.build()。
HttpClient httpClient = HttpClientBuilder.create()
.setSSLContext(sslContext)
.build()。
ClientHttpRequestFactoryrequestFactory =
new HttpComponentsClientHttpRequestFactory(httpClient)。
RestTemplate restTemplate = new RestTemplate()。
restTemplate.setRequestFactory(requestFactory)。
除了spring-boot-starter-web依賴性,你還應該匯入
<dependency>
<groupId>/span>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>/span>${change-version}</version>/span>
</dependency>/span>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/317201.html
標籤:
上一篇:CSS網格例外對齊
