为 Play Framework 配置 HikariCP 以通过 SSL 连接到 Postgres?
Configuring HikariCP for the Play Framework to connect to Postgres over SSL?
我正在尝试让 Play Framework 通过 SSL 连接到 Postgres 数据库。 SSL 在 Postgres 上配置了 LetsEncrypt。
没有 SSL,Play 连接数据库没有问题。但是有了它,我得到了错误:
java.io.FileNotFoundException: /home/mainuser/.postgresql/root.crt (No such file or directory)
需要说明的是,证书文件都放在目录/etc/postgresql/13/main/
下。与数据库的 ssl 连接在本地和 Play 之外的远程都工作得很好。
当前application.conf
包括:
db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost/my_db?ssl=on"
db.default.username=${?DATABASE_USER}
db.default.password=${?DATABASE_PASSWORD}
db.default.hikaricp.connectionTestQuery = "SELECT 1"
fixedConnectionPool = 5
database.dispatcher {
executor = "thread-pool-executor"
throughput = 1
thread-pool-executor {
fixed-pool-size = ${fixedConnectionPool}
}
}
我希望能够通过 SSL 在本地和远程连接到此数据库。官方文档
如有任何建议,我们将不胜感激。
您可能想要设置 PostgreSQL JDBC 驱动程序的 sslrootcert
变量以更改证书的位置。我引用驾驶手册:
sslrootcert = String
File name of the SSL root certificate. Defaults to defaultdir/root.crt
where defaultdir is ${user.home}/.postgresql/ in *nix systems and
%appdata%/postgresql/ on windows
It can be a PEM encoded X509v3 certificate
参见 example、https://jdbc.postgresql.org/documentation/head/connect.html
。虽然我还没有尝试过,但您应该可以将它作为进一步的参数添加到您的 JDBC 连接字符串,db.default.url
,例如
db.default.url="jdbc:postgresql://localhost/my_db?ssl=on&sslrootcert=/new/path/cert"
如果它的 application.conf
设置不明显或不存在。
我正在尝试让 Play Framework 通过 SSL 连接到 Postgres 数据库。 SSL 在 Postgres 上配置了 LetsEncrypt。
没有 SSL,Play 连接数据库没有问题。但是有了它,我得到了错误:
java.io.FileNotFoundException: /home/mainuser/.postgresql/root.crt (No such file or directory)
需要说明的是,证书文件都放在目录/etc/postgresql/13/main/
下。与数据库的 ssl 连接在本地和 Play 之外的远程都工作得很好。
当前application.conf
包括:
db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost/my_db?ssl=on"
db.default.username=${?DATABASE_USER}
db.default.password=${?DATABASE_PASSWORD}
db.default.hikaricp.connectionTestQuery = "SELECT 1"
fixedConnectionPool = 5
database.dispatcher {
executor = "thread-pool-executor"
throughput = 1
thread-pool-executor {
fixed-pool-size = ${fixedConnectionPool}
}
}
我希望能够通过 SSL 在本地和远程连接到此数据库。官方文档
如有任何建议,我们将不胜感激。
您可能想要设置 PostgreSQL JDBC 驱动程序的 sslrootcert
变量以更改证书的位置。我引用驾驶手册:
sslrootcert = String
File name of the SSL root certificate. Defaults to defaultdir/root.crt where defaultdir is ${user.home}/.postgresql/ in *nix systems and %appdata%/postgresql/ on windows
It can be a PEM encoded X509v3 certificate
参见 example、https://jdbc.postgresql.org/documentation/head/connect.html
。虽然我还没有尝试过,但您应该可以将它作为进一步的参数添加到您的 JDBC 连接字符串,db.default.url
,例如
db.default.url="jdbc:postgresql://localhost/my_db?ssl=on&sslrootcert=/new/path/cert"
如果它的 application.conf
设置不明显或不存在。