我们可以使用Bouncy Castle动态存储和使用这5个CRT文件吗

2022-01-28 12:15:13 标签 javaspringsslbouncycastlekeystore

我们有5个客户,有5个CRT文件和一个spring boot应用程序,用第三方API管理SSL通信。

将一个CRT配置到密钥库中,我们就可以与第三方API进行完美的通信。

现在的问题是,我们是否可以使用Bouncy Castle来动态存储和使用这5个CRT文件?

它们也可以通过编程方式存储?

如果不行,还有别的办法吗?

我们在连接中使用了RestTemplate。

###请检查Java Keystore API。你有一个详细的解释如何以编程方式管理密钥库:

Java Keystore API使用示例

###你可以试试这个代码。请注意创建RestTemplate is time consuming so you should create 5 RestTempla是否需要花费时间,所以你应该创建5RestTemplate beans for your 5 connections and later ju5个连接的bean,稍后只需要消耗它们。它们在任何情况下都是线程安全的。


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)      // path to your .jks file with its password
                                                           // (it can be also .p12), 
                                                           // note that this method is important if 
                                                           // SERVER expects your CLIENT certificate for connection. 
                                                           // It is also called 2-way-ssl
                .loadTrustMaterial( file_jks , password)   // path yo your .jks file with its password. 
                                                           // (again, it can be .p12)
                                                           // you will use this method if SERVER has i.e. self-signed certificate
                                                           // or any other certificate that is not trusted by CA
                .setProtocol("TLS1.2")                
                .build();
        
        HttpClient httpClient = HttpClientBuilder.create()
                .setSSLContext(sslContext)
                .build();
        ClientHttpRequestFactory requestFactory = 
                new HttpComponentsClientHttpRequestFactory(httpClient);
        RestTemplate restTemplate = new RestTemplate();
        restTemplate.setRequestFactory(requestFactory);

除了spring-boot-start -web依赖之外,你还应该导入它

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>${change-version}</version>
        </dependency>
阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码