导读:本期聚焦于小伙伴创作的《PostgreSQL SSL数据源怎么创建?SSL加密连接配置步骤是什么》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《PostgreSQL SSL数据源怎么创建?SSL加密连接配置步骤是什么》有用,将其分享出去将是对创作者最好的鼓励。

PostgreSQL作为常用的开源关系型数据库,默认连接方式为明文传输,在公网环境或敏感数据传输场景下存在安全风险,配置SSL加密连接并创建对应的SSL数据源是很有必要的。下面我们就一步步完成相关配置。

PostgreSQL SSL数据源怎么创建?SSL加密连接配置步骤是什么

一、PostgreSQL服务端SSL配置

1. 生成SSL证书

首先需要生成服务端使用的SSL证书,这里使用OpenSSL工具完成,依次执行以下命令:

# 生成CA私钥
openssl genrsa -out ca.key 2048
# 生成CA证书
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=PostgreSQL_CA"
# 生成服务端私钥
openssl genrsa -out server.key 2048
# 生成服务端证书请求
openssl req -new -key server.key -out server.csr -subj "/CN=postgres-server"
# 用CA证书签发服务端证书
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 3650
# 设置证书权限,PostgreSQL要求私钥权限不能过高
chmod 0600 server.key ca.key

2. 修改PostgreSQL配置文件

将生成的ca.crt、server.crt、server.key三个文件放到PostgreSQL的数据目录下,然后修改postgresql.conf文件,开启SSL功能:

# 开启SSL
ssl = on
# 指定服务器证书路径
ssl_cert_file = 'server.crt'
# 指定服务器私钥路径
ssl_key_file = 'server.key'
# 指定CA证书路径,用于验证客户端证书(可选)
ssl_ca_file = 'ca.crt'

接着修改pg_hba.conf文件,添加SSL连接规则,比如允许所有IP通过SSL方式连接:

# 格式:连接类型 数据库 用户 地址 认证方法 选项
hostssl all all 0.0.0.0/0 md5

修改完成后重启PostgreSQL服务使配置生效。

二、验证服务端SSL是否生效

可以使用psql客户端连接数据库,查看SSL状态:

psql "host=127.0.0.1 port=5432 dbname=postgres user=postgres sslmode=require"
# 连接成功后执行以下SQL查看SSL状态
postgres=# show ssl;
 ssl 
-----
 on
(1 row)

三、创建SSL数据源

1. Java场景下的SSL数据源配置

Java连接PostgreSQL需要导入CA证书到信任库,然后配置数据源参数,示例代码如下:

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import javax.sql.DataSource;
import java.util.Properties;

public class PgSslDataSource {
    public static DataSource createSslDataSource() {
        HikariConfig config = new HikariConfig();
        // 数据库地址,指定sslmode为require
        config.setJdbcUrl("jdbc:postgresql://127.0.0.1:5432/postgres?sslmode=require");
        config.setUsername("postgres");
        config.setPassword("your_password");
        // 如果需要验证服务器证书,需要配置sslrootcert参数指向CA证书路径
        Properties props = new Properties();
        props.setProperty("sslrootcert", "/path/to/ca.crt");
        config.setDataSourceProperties(props);
        return new HikariDataSource(config);
    }
}

2. Python场景下的SSL数据源配置

使用psycopg2库连接时,配置SSL参数的示例如下:

import psycopg2
from psycopg2.extras import DictCursor

def get_ssl_conn():
    conn = psycopg2.connect(
        host="127.0.0.1",
        port=5432,
        dbname="postgres",
        user="postgres",
        password="your_password",
        # sslmode可选require、verify-ca、verify-full等
        sslmode="require",
        # 如果需要验证CA证书,指定sslrootcert路径
        sslrootcert="/path/to/ca.crt"
    )
    return conn

四、常见问题说明

  • sslmode参数可选值:disable(不使用SSL)、allow(优先尝试SSL)、prefer(默认,优先SSL)、require(必须使用SSL)、verify-ca(验证CA证书)、verify-full(验证CA和服务器主机名)
  • 如果客户端连接时报证书验证失败,检查CA证书路径是否正确,以及证书是否过期
  • 生产环境建议使用verify-full模式,避免中间人攻击

按照以上步骤操作,就可以完成PostgreSQL SSL加密连接的配置,以及对应SSL数据源的创建,保障数据传输过程的安全性。

PostgreSQLSSL数据源加密连接SSL证书修改时间:2026-05-30 21:23:04

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。