Quarkus非响应式JDBC配合Panache+Agroal配置Postgres SSL连接方法
Quarkus 非响应式PostgreSQL SSL连接(三类证书)配置方案
完全可以实现该需求,Agroal连接池对接的是标准PostgreSQL JDBC驱动,原生支持服务端证书、客户端证书、客户端密钥三类SSL参数配置,无需依赖响应式客户端。
前置准备
将你获取到的三类证书文件放入项目src/main/resources目录,建议提前将客户端私钥转换为JDBC驱动兼容的PKCS8格式,转换命令如下:
openssl pkcs8 -topk8 -inform PEM -in 原始客户端密钥文件名.pem -out client.pk8 -nocrypt
如果需要给客户端密钥设置加密密码,去掉上述命令中的-nocrypt参数,后续配置中补充密钥密码即可。
核心配置(application.properties)
直接通过Agroal的额外JDBC属性透传PostgreSQL驱动的SSL参数即可:
# 基础数据源配置 quarkus.datasource.db-kind=postgresql quarkus.datasource.username=<数据库用户名> quarkus.datasource.password=<数据库密码> # JDBC连接地址开启SSL quarkus.datasource.jdbc.url=jdbc:postgresql://<数据库地址>:<端口>/<数据库名>?ssl=true # SSL三类证书配置 quarkus.datasource.jdbc.additional-jdbc-properties.sslrootcert=server.crt quarkus.datasource.jdbc.additional-jdbc-properties.sslcert=client.crt quarkus.datasource.jdbc.additional-jdbc-properties.sslkey=client.pk8 # 可选配置:生产环境开启服务端域名校验,避免中间人攻击 quarkus.datasource.jdbc.additional-jdbc-properties.sslmode=verify-full # 可选配置:如果客户端密钥设置了加密密码,补充该配置 quarkus.datasource.jdbc.additional-jdbc-properties.sslpassword=<客户端密钥密码>
验证说明
- 上述配置完成后,Panache ORM无需做任何额外调整,会自动使用配置好的Agroal数据源发起SSL加密的数据库请求
- 证书路径如果放在项目外部,可直接填写文件系统绝对路径
内容的提问来源于stack exchange,提问作者N. Silviu
相关产品推荐
相关产品推荐

