java - 使用 Spring Web Client 命中 https Rest 服务

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

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

我已使用以下命令将 .cer 导入到 keystore 中

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 的资源文件夹中包含任何示例或链接,谢谢

最佳答案


下面是您可以将 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 证书非常有帮助

谢谢

关于java - 使用 Spring Web Client 命中 https Rest 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61357365/

相关文章:

java - 将给定时间转换为 GMT

java - 在类或方法中实例化 Java Scanner

java - 在 Freemarker 模板引擎中读取导致 TemplateException 的 Java 对象

java - 为什么我从 hello world SpringBoot 收到 WhiteLabel 错误?

mongodb - 从 Spring boot 连接 Mongodb Atlas

java - 大多数未打补丁的 Tomcat 网络服务器都容易受到攻击,谁的错?

java - 无法在 Springboot java 配置中排除 MongoAutoConfiguration

java - 如何配置 axis2-java2wsdl-maven-plugin 使用多个类生成一个 wsdl?

web-services - Tomcat 8 上的 JAX-WS Web 服务 – JAX-WS 库文件位置?

java - Apache Camel : Build a CXF consumer and call the service