为 postgres 使用外部信任库和密钥库

Using an external truststore and keystore for postgres

我正在尝试为 Postgres 10 启用 SSL。不过,我不想指定 ca 文件,而是想使用 truststore.jks 和提供给我的 keystore.p12。 Postgres 和我们的通信服务都在自己的 docker 容器中。这些服务能够共享信任库和密钥库,方法是将它们置于共享卷安装中并在启动时使用基本 Java 命令:

-Djavax.net.ssl.trustStore=${TRUSTSTORE_NAME}

但是,postgres 的工作方式不同(据我所知)。它在 postgresql.conf 中具有以下属性:

ssl = on
ssl_cert_file = '/server.crt'   
ssl_key_file = '/server.key'
ssl_ca_file = '/root.crt'
ssl_crl_file = '/ssl.crl'

如果我有权访问这些证书,这将有效。但是,我不想指向特定的证书,因为它们已经在信任库中并且我不知道它们的别名 - 我想改为说“使用我给你的这个信任库”。这可能吗?

Java KeyStore (*.jks) 是一种 Java-specific 格式,而 PostgreSQL 不是用 Java 编写的,因此仅此一项就取消了您的信任库 + 密钥库配置的资格。

至于 PKCS12(*.p12 文件扩展名),虽然它是 platform-independent 标准,但我只见过在与各种客户端相关的 PostgreSQL 中使用过(最值得注意的是 JDBC-based) 并且从不向服务器提供证书。

考虑到所有这些,OP,不幸的是你必须提取证书并直接使用它们。