【问题标题】:Spring Boot connection to Postgresql with SSLSpring Boot 使用 SSL 连接到 Postgresql
【发布时间】:2019-06-12 22:36:14
【问题描述】:

我有一个使用 Postgresql 9.6 作为数据库的 Spring Boot 应用程序(版本 2.1.1)。 我必须使用sslmode=verify-ca 通过 SSL 连接到数据库。 到目前为止我所做的是在 Application.properties 文件中设置属性

spring.datasource.url=jdbc:postgresql://`url`:`port`/`db`?
    ssl=true&
    sslmode=verify-ca&
    sslcert=`path_to_client_cert`&
    sslkey=`path_to_client_key`&
    sslrootcert=`path_to_ca_cert`

有没有办法在其他一些 spring 属性中而不是在连接 url 中指定 ssl 属性?

另外,是否可以指定证书的相对路径而不是使用绝对路径?

【问题讨论】:

    标签: java postgresql spring-boot ssl-certificate application.properties


    【解决方案1】:

    我无法让它与org.postgresql.ssl.NonValidatingFactory一起工作

    我将?sslmode=verify-full 附加到连接字符串的末尾。

    默认使用org.postgresql.ssl.LibPQFactory

    默认情况下,它将在$HOME/.postgresql/ 下查找证书,如下所示:

    org.postgresql.PGProperty.SSL_ROOT_CERT; root.crt
    org.postgresql.PGProperty.SSL_CERT; postgresql.crt
    org.postgresql.PGProperty.SSL_KEY; postgresql.pk8
    

    要将您的私钥转换为 pk8 格式:

    openssl pkcs8 -topk8 -inform PEM -outform DER -in postgresql.key -out postgresql.pk8 -nocrypt
    

    【讨论】:

      【解决方案2】:

      我对放在src/main/resources 中的证书使用了相对路径,效果很好:

      jdbc:postgresql://db_host:db_port/db_name?
          sslmode=require&
          sslrootcert=`my_root_certificate.crt`
      

      似乎 URL 是指定这些参数的唯一位置。您也可以使用环境变量进行插值。

      【讨论】:

      • ` 真的可以在这个 jdbc 连接字符串中工作吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-24
      • 2018-08-19
      • 1970-01-01
      • 2020-11-06
      • 2020-08-24
      • 1970-01-01
      • 2017-07-10
      相关资源
      最近更新 更多