使用 Windows 证书存储的 ODBC
来自 PostgreSQL Wiki
跳转到导航跳转到搜索如何让 ODBC 驱动使用 Windows 证书存储
这只是一个快速概述所需内容。还应创建正式的用户文档。
- 获取证书
- 此证书应放置在 Windows 证书存储中,并带有私钥。
- 可以使用 MMC 和证书管理插件验证此操作。
- 使用 Windows 证书导出工具导出证书的公共部分。
- 我使用 MMC 完成此操作,可能还有其他方法。
- 确保以 "PEM 编码" 格式导出。
- 应创建 .crt 文件(例如:user.crt)
- 获取根链(可能可以从 Windows 证书存储中导出,或从证书颁发机构获取)。
- 应采用 PEM 格式,并包含验证 *服务器* 证书所需的所有证书。
- 应为 .crt 文件(例如:rootchain.crt)
- 安装最新版本的 PG ODBC 驱动程序。
- 按预期配置它,或多或少。
- 使用 PostgreSQL Unicode(32 位或 64 位,但请确保根据使用情况运行正确的 ODBC 管理器)。
- 数据源和描述可以是任何内容。
- 数据库应该是 '正确的'。
- SSL 模式:需要(如果两边都有有效证书,则应尝试使用 "verify-full")。
- 服务器是 '正确的'。
- 用户名:分配给用户的 *PG* 用户名(例如:sfrost)。
- 密码:*空白*。
- 在数据源下 - 选中 "Declare/Fetch"。
- 设置环境变量
- PG 关注三个环境变量。
- PGSSLKEY
- 此变量应设置为 "capi:用户名",例如 "capi:Stephen P Frost",其中 '用户名' 是证书的 CN,或 Windows 证书存储中显示的证书名称。
- PGSSLCERT
- 此变量需要设置为 user.crt 文件,例如 "C:\user.crt"。
- PGSSLROOTCHAIN
- 此变量需要设置为 rootchain.crt 文件,例如 "C:\rootchain.crt"。
- OpenSSL 也需要一些东西。
- 需要获取 capi.dll 文件并将其放置在 ODBC 安装目录中(见下文)。
- 需要设置 OPENSSL_CONF 环境变量 - 应设置为 openssl.cfg 文件 - C:\Program Files (x86)\psqlODBC\0901\bin\openssl.cfg
- 我们应该分发 openssl.cfg,但它需要以下信息。
[openssl_init] oid_section = new_oids engines = engine_section [engine_section] capi = capi_config [capi_config] engine_id = capi dynamic_path = "c:\\program\ files\ \(x86\)\\psqlodbc\\0901\\bin\\capi.dll" init=1
- 服务器端
- 它非常简单,pg_hba.conf 中有关映射的文档提供了所有必要的信息。
- 在 pg_hba.conf 中,需要类似以下内容。
- hostssl all all 0.0.0.0/0 cert map=certmap
- 然后,在 pg_ident.conf 中
- certmap /"^Stephen P Frost$" sfrost
- 在 postgresql.conf 中
- ssl=true
- 在您的数据目录中,您应该有以下真实文件或符号链接。
- root.crt -- 根链
- server.crt -- 服务器公钥证书
- server.key -- 服务器私钥
- 未来
- 我已经要求 ODBC 维护人员在其分发中包含默认的 openssl.cfg(可能带有上面的节)和 capi.dll。
- 我将与 PG 社区合作,让他们支持 CAPI 用于实际的证书和根链。
- 显然,如果/当这些发生时,我们需要调整/缩减此文档。