有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用SpringWeb客户端命中https rest服务

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

我两者都进口了。在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的资源文件夹中包含任何示例或链接吗?谢谢


共 (1) 个答案

  1. # 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 = SslContextBuilder.forClient()
                .trustManager(new ClassPathResource(entrustSslCertFilePath).getInputStream())
                .build();
    

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

    谢谢