postgres r2dbc выдает ошибку ssl, но подключается с использованием jpa

Конфигурация 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, обе весенние версии 2.4.1. Я застрял с этим, не могу найти причину этой ошибки. Любые решения приветствуются.


person MagicBeans    schedule 01.01.2021    source источник


Ответы (1)


Вам нужно изменить параметр sslmode в URL-адресе r2dbc на sslMode. R2dbc, по-видимому, по умолчанию использует режим sslmode как полный проверки, если вы не передаете sslMode в качестве параметра, и поэтому вы видите исключения, что он не может найти сертификат.

person Rafiq    schedule 14.01.2021