请求提供通过OpenSSL与Progress DataDirect Linux ODBC驱动连接PostgreSQL的完整配置示例
请求提供通过OpenSSL与Progress DataDirect Linux ODBC驱动连接PostgreSQL的完整配置示例
看起来你已经把PostgreSQL容器的SSL证书和基础配置搞定了,接下来咱们一步步把客户端的ODBC配置调整好,实现加密连接。
第一步:准备客户端证书文件
你在服务器端生成的fd.crt证书需要复制到客户端机器上,找一个安全的目录存放,比如/home/tjcw/ODBC/ssl/:
# 创建目录(如果不存在) mkdir -p /home/tjcw/ODBC/ssl # 复制服务器的fd.crt到这个目录(可通过scp等方式传输) # scp <服务器地址>:/path/to/fd.crt /home/tjcw/ODBC/ssl/ # 设置安全权限,仅当前用户可读 chmod 400 /home/tjcw/ODBC/ssl/fd.crt
第二步:配置ODBC数据源
推荐单独使用/etc/odbc.ini来配置加密的数据源(文件不存在则新建),添加以下内容:
[ODBC Data Sources] PostgreSQL_SSL=DataDirect 8.0 PostgreSQL SSL [PostgreSQL_SSL] Description = 加密连接的PostgreSQL ODBC数据源 Driver = /home/tjcw/ODBC/drivers/lib/UKpsql95.so HostName=localhost PortNumber=5432 Database=acedb # 开启SSL加密开关 SSL=1 # 指定服务器证书路径,用于验证服务器身份 SSLServerCert=/home/tjcw/ODBC/ssl/fd.crt # 强制验证服务器证书(可选但强烈推荐,防范中间人攻击) SSLVerifyServerCert=1 # 可提前配置数据库用户名,也可在连接时输入 # UserName=your_db_user
如果你习惯在/etc/odbcinst.ini里配置,也可以把上述PostgreSQL_SSL段的内容整合进去,不过分开管理驱动和数据源会更清晰。
第三步:确保PostgreSQL容器允许SSL连接
你当前的Dockerfile还未配置pg_hba.conf来放行SSL连接,需要在init-user-db.sh中添加一行规则:
# 允许所有客户端通过SSL连接(可根据实际需求调整IP范围) echo "hostssl all all 0.0.0.0/0 scram-sha-256" >> /var/lib/postgresql/data/pg_hba.conf
之后重新构建容器,PostgreSQL才会接受加密的客户端连接请求。
第四步:测试连接
用unixODBC的isql工具验证连接是否成功:
isql -v PostgreSQL_SSL <你的数据库用户名> <你的数据库密码>
如果连接失败,可检查以下几点:
- 证书路径是否正确、权限是否为
400 - PostgreSQL容器的5432端口是否正确映射到客户端的localhost
pg_hba.conf的hostssl规则是否配置正确- 服务器
postgresql.conf中的ssl参数是否已设为on
备注:内容来源于stack exchange,提问作者Chris Ward
相关产品推荐
相关产品推荐

