跳转到主要内容

sslutils

使用SQL管理SSL证书

概览

扩展包名版本分类许可证语言
sslutils1.4.1SECPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
7410sslutils否是否是否否-

PGDG packages remain absent for PG18 on EL8 x86_64.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY1.4.11817161514sslutils-
RPMPIGSTY1.4.11817161514sslutils_$v-
DEBPIGSTY1.4.11817161514postgresql-$v-sslutils-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
d13.x86_64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
d13.aarch64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
u22.x86_64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
u22.aarch64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
u24.x86_64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
u24.aarch64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
u26.x86_64
u26.aarch64
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4
PIGSTY 1.4

构建

您可以使用 pig build 命令构建 sslutils 扩展的 RPM / DEB 包:

pig build pkg sslutils         # 构建 RPM / DEB 包

安装

您可以直接安装 sslutils 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

安装
pig install sslutils;          # 当前活跃 PG 版本安装
pig
pig ext install -y sslutils -v 18  # PG 18
pig ext install -y sslutils -v 17  # PG 17
pig ext install -y sslutils -v 16  # PG 16
pig ext install -y sslutils -v 15  # PG 15
pig ext install -y sslutils -v 14  # PG 14
dnf
dnf install -y sslutils_18       # PG 18
dnf install -y sslutils_17       # PG 17
dnf install -y sslutils_16       # PG 16
dnf install -y sslutils_15       # PG 15
dnf install -y sslutils_14       # PG 14
apt
apt install -y postgresql-18-sslutils   # PG 18
apt install -y postgresql-17-sslutils   # PG 17
apt install -y postgresql-16-sslutils   # PG 16
apt install -y postgresql-15-sslutils   # PG 15
apt install -y postgresql-14-sslutils   # PG 14

创建扩展:

CREATE EXTENSION sslutils;

用法

来源:

sslutils 为 Postgres Enterprise Manager 及受控管理流程提供 SSL 证书生成和吊销辅助函数。部分函数会读取或修改数据库服务器上的文件。

安装和检查

CREATE EXTENSION sslutils;
SELECT sslutils_version();
SELECT openssl_get_crt_expiry_date('server.crt');

这个不可重定位的扩展需要超级用户安装。调用函数无需预加载或重启 PostgreSQL;部署生成的证书是另外的服务器配置操作。

主要函数

函数用途
openssl_rsa_generate_key(bits)以文本返回 RSA 私钥
openssl_rsa_key_to_csr(key, cn, country, state, location, unit, email)返回 CSR
openssl_csr_to_crt(csr, ca_cert_path, private_key_path, days)使用服务器证书和私钥文件签署 CSR
openssl_rsa_generate_crl(ca_cert_path, ca_key_path, days)返回证书吊销列表
openssl_is_crt_expire_on(cert_path, at_time)检查证书到期情况,返回 1、-1 或 0
openssl_get_crt_expiry_date(cert_path)返回到期时间戳
openssl_revoke_certificate(cert_pem, crl_path, days)吊销证书并重新生成 CRL

生成自签名证书时,签署函数的证书路径参数为 NULL,私钥路径指定签名密钥。可选有效期默认是 3650 天。文件路径指向 PostgreSQL 服务器,而非 SQL 客户端机器。

保护密钥和服务器文件

在 PostgreSQL 11 及以上,证书检查函数需要 pg_read_server_files 成员资格;吊销操作同时检查该角色和 pg_write_server_files。这些角色具有广泛的服务器文件访问能力,应仅授予可信管理员,并按需限制函数执行权限。

以 SQL 文本返回的私钥可能进入查询结果、日志、命令历史或应用追踪。应保护它们的传递和存储。这个扩展不提供 SSL 会话检查函数,也不会自动配置 PostgreSQL 的 TLS 设置。

1.4.1 的文件访问变化

证书检查和 CA 签名路径会检查是否位于服务器数据目录内;应将输入文件放在该目录,并在适当时使用服务器相对路径。吊销要求设置 sslutils.revoke_certificate_crl_paths,它是在 postgresql.conf 中配置、重载后生效的 CRL 输出路径前缀逗号分隔允许列表。吊销检查仅比较字符串前缀,不解析规范化路径来验证目录包含关系;应配置范围较窄的前缀,并保护输出位置。

吊销实现的第一个参数接收 PEM 证书文本,尽管较早 README 和 SQL 注释描述为证书路径。它读取服务器上的 CA 文件 ca_certificate.crt、ca_key.key,并创建或追加 revoke_cert.db。操作前应准备好 CA 文件。不要认为广泛的服务器文件角色能够绕过扩展自身的检查。

这个页面对您有帮助吗?