当前位置: 首页 > 知识库问答 >
问题:

使用ssl的Spring 5 WebClient

贝成业
2023-03-14

我试图找到WebClient使用的示例。

我的目标是使用Spring5 WebClient使用https和自签名证书查询REST服务

有什么例子吗?

共有1个答案

牟焱
2023-03-14

看起来Spring 5.1.1(Spring boot 2.1.0)从ReactorClientTtpConnector中删除了HttpClientOptions,因此在创建ReactorClientTtpConnector实例时不能配置选项

现在起作用的一个选择是:

val sslContext = SslContextBuilder
            .forClient()
            .trustManager(InsecureTrustManagerFactory.INSTANCE)
            .build()
val httpClient = HttpClient.create().secure { t -> t.sslContext(sslContext) }
val webClient = WebClient.builder().clientConnector(ReactorClientHttpConnector(httpClient)).build()

基本上,在创建HttpClient时,我们配置了不安全的sslContext,然后将此HttpClient全局传递给ReactorClientHttpConnector中使用。

val sslContext = SslContextBuilder
            .forClient()
            .trustManager(InsecureTrustManagerFactory.INSTANCE)
            .build()
val tcpClient = TcpClient.create().secure { sslProviderBuilder -> sslProviderBuilder.sslContext(sslContext) }
val httpClient = HttpClient.from(tcpClient)
val webClient =  WebClient.builder().clientConnector(ReactorClientHttpConnector(httpClient)).build()
  • https://docs.spring.io/spring/docs/5.1.1.release/spring-framework-reference/web-reactive.html#webflux-client-builder-reactor
  • https://netty.io/4.0/api/io/netty/handler/ssl/util/IncisureTrustManagerFactory.html

更新:相同代码的Java版本

SslContext context = SslContextBuilder.forClient()
    .trustManager(InsecureTrustManagerFactory.INSTANCE)
    .build();
                
HttpClient httpClient = HttpClient.create().secure(t -> t.sslContext(context));

WebClient wc = WebClient
                    .builder()
                    .clientConnector(new ReactorClientHttpConnector(httpClient)).build();
 类似资料:
  • 问题内容: 我正在尝试使用我的SSL证书运行socket.io,但是它将无法连接。 我基于聊天示例创建代码: 如果我删除SSL代码,它运行正常,但是与此同时,我收到了一个请求,请求http://domain.com/socket.io/1/?t=1309967919512 请注意,它没有尝试使用https,这会导致它失败。 我正在测试chrome,因为它是该应用程序的目标浏览器。 抱歉,这是一个简

  • 问题内容: 以下代码可以正常工作: 如果我取消注释以下行: 启用S​​SL连接并使用此URL: 则程序失败,并且错误与证书有关。 那么,我该怎么解决这个问题呢? 问题答案: 引起原因:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderExcept

  • 通过网络传输敏感信息是有风险的,出于以下原因: 你不能总是确保与你交流的实体真的是你认为那位。 网络数据可以被截获,因此它是有可能被未经授权的第三方(有时被称为一个攻击者)所读取。 攻击者截获数据并可能修改它才将其发送给接收者。 SSL 解决了这些问题。它解决了第一个问题的方式是,有选择地允许通讯双方的身份来确保另一方在一个身份验证过程一旦双方认证通过,SSL 提供了一个双方消息安全传输的加密连接

  • 问题内容: 我需要通过带有SSL的spring-ldap与LDAP服务器进行通信,并且另一端拥有一个自签名证书。 有什么好心请给我一些指导来进行设置吗? 问题答案: 查看Spring LDAP文档以通过HTTP(S)连接到LDAP服务器: 就自签名证书而言,您可以将证书链导入信任库并设置以下VM参数: 或在运行时覆盖信任库,例如: 请记住,这两个选项都将覆盖默认的JVM信任库。因此,如果您使用不同

  • MySQL Server(在Red Hat 7 OS上运行的远程机器,MySQL版本为5.7.11)启用了SSL,如下所示: 我试图从我的本地计算机(windows)使用SSL(而不是身份验证)建立JDBC加密。下面是这样做的JDBC代码: 我已按照此链接创建证书:https://dev.mysql.com/doc/refman/5.7/en/creating-ssl-files-using-op

  • 问题内容: 我正在尝试查找WebClient使用的示例。我的目标是使用Spring 5 WebClient使用https和自签名证书查询REST服务 有什么例子吗? 问题答案: 切勿在生产中使用此TrustManagerFactory。它仅用于测试目的,因此非常不安全。