【问题标题】:Using spring Web Client hit https rest service使用 spring Web Client 命中 https 休息服务
【发布时间】:2020-04-22 04:31:28
【问题描述】:

我从客户端获得了两个.cer 文件,现在我的目标是使用 https 而不是使用 spring webclient 的 http 来访问客户端 api。因为我是 spring webclient 的新手,所以不知道该怎么做

我已使用以下命令在密钥库中导入了两个 .cer

keytool -import -file "C:\Users\ankur\Download\Entrust_Root_Certification_Authority-G2.cer" -keystore "C:\Program Files\Java\jre1.8.0_40\lib\security\cacerts" -storepass "changeit"

keytool -import -file "C:\Users\ankur\Download\certificate\Entrust_Certification_Authority-L1K.cer" -keystore "C:\Program Files\Java\jre1.8.0_40\lib\security\cacerts" -storepass "changeit

我在下面写了代码,以便从 webclient 以编程方式访问 api

@Bean

       public WebClient createWebClient() throws SSLException {

             SslContext sslContext = SslContextBuilder

                           .forClient()

                           .trustManager(InsecureTrustManagerFactory.INSTANCE)

                           .build();          

             HttpClient httpClient = HttpClient

                           .create()

                           .secure(sslContextSpec -> sslContextSpec.sslContext(sslContext));

                    ClientHttpConnector connector = new ReactorClientHttpConnector(httpClient);

             return WebClient.builder()

                           .clientConnector(connector).build();

       }



application.yml
    rest:
      endpoint:https://someexample.com/xyz

我不知道如何处理 .cer 文件在哪里存储这些 .cer 文件,我们是否需要在 spring boot 的资源文件夹中包含任何示例或链接,谢谢

【问题讨论】:

标签: java spring-boot web-services ssl-certificate spring-webclient


【解决方案1】:


以下是将 ssl 证书配置为 webclient 的方法之一

第 1 步: 将所需证书复制到 resources 文件夹
我们以config/Entrust_Root_Certification_Authority-G2.cer为例

第 2 步: 创建一个属性以在您的配置类之一中配置证书的位置,如下所示

  @Value("${entrust.ssl.cert.path:config/Entrust_Root_Certification_Authority-G2.cer}")
  private String entrustSslCertFilePath;

第 3 步: 在创建 SslContext 时加载这些证书

SslContext sslContext = SslContextBuilder.forClient()
            .trustManager(new ClassPathResource(entrustSslCertFilePath).getInputStream())
            .build();

注意:上面提到的我已经使用了pem 文件,它工作正常,试一试,如果需要,请随时将cer 转换为pem 文件和sslshopper 将非常有助于验证和转换 ssl证书

谢谢

【讨论】:

  • 感谢您的回答我有两个证书我需要将这两个证书放在资源文件夹中还是都可以在一个 pem 文件中转换
  • 看起来这两个证书都是 Entrust 的,所以我认为可以将两者转换为一个 pem 文件,但我不确定,请测试不同的组合,如果上述方法解决了您的问题,请接受,以便对他人有所帮助
猜你喜欢
  • 2017-12-28
  • 2022-01-08
  • 2020-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-31
  • 1970-01-01
  • 2018-07-11
相关资源
最近更新 更多