0

r2dbc 配置:

spring:
  profiles: default   r2dbc:
  url: r2dbc:postgresql://testserver.dev.net:1234/test?ssl=true&sslmode=require
  username: test
  password: test
  connection_timeout: 20000

jpa配置:

spring:
profiles: default
  datasource:
    url: jdbc:postgresql://testserver.dev.net:1234/test?ssl=true&sslmode=require
    username: test
    password: test
    hikari:
        connectionTimeout: 20000
        maximumPoolSize: 5

jpa 连接工作正常并返回结果,r2dbc 无法连接到服务器瞄准无法找到有效证书

原因:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径

在 r2dbc 和 ssl 关闭的情况下,它说 pg_hba.conf 没有主机条目。为什么它只要求带有 r2dbc 配置的证书。

与 r2dbc 的依赖关系:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-r2dbc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency> <dependency>
        <groupId>io.r2dbc</groupId>
        <artifactId>r2dbc-postgresql</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>

对于 jpa,我使用的是 spring web starter 和 jpa starter,两者都是 spring 版本 2.4.1。我被这个困住了,找不到这个错误的原因。欢迎任何解决方案。

4

2 回答 2

1

您需要将 r2dbc url 中的“sslmode”参数更改为“sslMode”。如果您没有将 sslMode 作为参数传递,R2dbc 似乎默认 sslmode 为“verify-full”,这就是为什么您会看到无法找到证书的异常。

于 2021-01-14T15:44:52.390 回答
0

如果您拥有所有证书,这是您可以使用的配置,它对我有用。确保证书在资源文件夹中并且它们应该只是 pem 格式。

spring:
  config:
    activate:
      on-profile: dev
  r2dbc:
    url: r2dbc:pool:postgresql://<DB_HOST>:<DB_PORT>/<DB_NAME>
    username: <DB_USER>
    password: <DB_PASSWORD>
    properties:
      ssl: true
      sslMode: VERIFY_CA
      sslRootCert: root.pem
      sslCert: server.pem
      sslKey: key.pem
于 2022-02-07T05:21:57.453 回答