Postgres 15 上的 TLS 设置 – 常见做法

等保: Postgresql配置ssl链接 等保: postgresql配置ssl链接完整方案和避坑指南 阅读详情

01 /简介/

🚀TLS 是大多数应用程序中最常用的安全协议之一,但也鲜为人知🌏。在这篇博客中,我将简要解释TLS的概念,以及如何将其配置为使用兼容的OpenSSL库编译的Postgres 15版本。💐

02 /PostgreSQL 服务器端设置/

这些是postgresql.conf中与TLS相关的TLS设置。

🔔 请注意,这些参数以前缀 SSL 开头,这是一个可与 TLS(较新术语)互换使用的术语。两者都指同一件事。

#ssl = off
#ssl_ca_file = ''
#ssl_cert_file = 'server.crt'
#ssl_crl_file = ''
#ssl_crl_dir = ''
#ssl_key_file = 'server.key'
#ssl_ciphers = 'HIGH:MEDIUM:+3DES:!aNULL' # allowed SSL ciphers
#ssl_prefer_server_ciphers = on
#ssl_ecdh_curve = 'prime256v1'
#ssl_min_protocol_version = 'TLSv1.2'
#ssl_max_protocol_version = ''
#ssl_dh_params_file = ''
#ssl_passphrase_command = ''
#ssl_passphrase_command_supports_reload = off

大多数时候,您只需要填写SSL,ssl_ca_file,ssl_cert_file,ssl_key_file,可能还有ssl_passphrase_command。例如:

ssl = on
ssl_ca_file = '/home/user/cert/cacert.pem'
ssl_cert_file = '/home/user/cert/server.pem'
ssl_key_file = '/home/user/cert/server.key'
ssl_passphrase_command = 'echo passphrase'

💁这些基本 TLS 参数告诉 Postgres 您希望在服务器上启用 TLS,并提供证书颁发机构 (CA) 证书文件、实体证书文件和私钥文件的路径。这3个文件通常被称为X509证书,主要用于保证客户端和服务器之间的信任。

📕CA 证书文件 (ssl_ca_file) 是信任根,您可以使用 openSSL 为您的组织生成一个证书,并使用它来创建和签署其他实体证书以供应用程序使用。

📕实体证书(ssl_cert_file)和私钥(ssl_key_file)形成一个pair,在某种意义上,证书本身包含公钥,而私钥文件包含私钥。这些密钥用于 TLS 握手期间的异步身份验证。实体证书通常使用在 ssl_ca_file 中配置的相同 CA 证书文件签名,这样它就可以被信任。也可以使用 openssl 生成和签名私钥和实体证书文件。

 🔧ssl_passphrase_command用于获取密码短语以解密ssl_key_file(如果在生成时已加密)。

请参阅此处🔗 的这篇博客文章📝,了解如何使用 openssl 创建和签署这些证书文件,以及对其余大部分默认 TLS 相关参数的简短说明。

03 /PostgreSQL 服务器端pg_hba设置/

除了上述主要设置外, 😆您还需要配置 pg_hba.conf 以限制哪些连接需要 TLS,哪些不需要。对于大多数人来说,这些设置通常更复杂😅。启用 TLS 后,可能涉及 2 个身份验证;一个涉及TLS握手(以验证客户端和服务器之间的信任),另一个涉及PG中以检查连接用户是否被授权。

请考虑以下示例:

hostssl   mydatabase myuser       192.168.1.0/24     trust
hostssl   mydatabase myuser2      192.168.1.0/24     trust clientcert=verify-ca
hostssl   mydatabase myuser3      192.168.1.0/24     password clientcert=verify-ca
hostssl   mydatabase myuser4      192.168.1.0/24     cert clientcert=verify-ca
hostnossl mydatabase myuser5      127.0.0.1/32       trust

🔨hostssl mydatabase myuser 192.168.1.0/24 trust

💡意味着只要myuser使用TLS在192.168.1.0网络中连接,myuser就会立即获得访问mydatabase的权限。

🔨hostssl mydatabase myuser2 192.168.1.0/24 trust clientcert=verify-ca

🔔表示如果 myuser2 使用 TLS 在 192.168.1.0 网络中连接,则 myuser2 需要提供自己的 X509 证书,服务器将使用 ssl_ca_file 中配置的 CA 证书验证客户端证书。如果证书可以信任,则 myuser2 将被授予对 mydatabase 的访问权限。

🔨hostssl mydatabase myuser3 192.168.1.0/24 password clientcert=verify-ca

💡表示如果 myuser3 使用 TLS 在 192.168.1.0 网络中连接,则 myuser3 需要提供自己的 X509 证书,服务器将使用 ssl_ca_file 中配置的 CA 证书验证客户端证书。如果证书可以信任,则 myuser3 将提示输入密码。如果密码匹配,则 myuser3 将被授予访问 mydatabase 的权限。

🔨hostssl mydatabase myuser4 192.168.1.0/24 cert clientcert=verify-ca

🔔表示如果 myuser4 使用 TLS 在 192.168.1.0 网络中连接,则 myuser4 需要提供自己的 X509 证书,服务器将使用 ssl_ca_file 中配置的 CA 证书验证客户端证书。如果证书可以信任,则 PG 将读取客户端提供的证书中的公用名 (CN) 字段,并检查它是否与连接用户的用户名匹配,如果匹配,则 user4 将有权访问 mydatabase。

🔨hostnossl mydatabase myuser5 127.0.0.1/32 trust

💡意味着如果 myuser5 在 127.0.0.1 localhost 中不使用 TLS 连接,myuser5 将只被授予对 mydatabase 的访问权限。

04 /PostgreSQL 客户端 TLS 选项/

大多数情况下,当 psql 客户端连接到启用了 TLS 的 Postgres 服务器时,是 psql 客户端将验证 Postgres 服务器发送的实体证书(在 postgresql.conf 中ssl_cert_file配置)。💁换句话说,客户端验证服务器。当然,psql 客户端还需要具有 CA 证书的副本(或由公共根 CA 签名的子 CA 证书),客户端可以使用该副本在握手期间🤝验证服务器的证书。

🌏这类似于用户在浏览器上连接到 https 网站。例如,Web 服务器 google.ca 握手期间🤝将其服务器证书发送到您的浏览器,浏览器将使用浏览器附带的许多内置 CA 证书来验证此证书。如果证书可以信任,则允许您连接。如果没有,它会给你一个警告页面,说“你的连接不是私有的”,你可以选择继续或不继续。

使用 psql 客户端,您可以指定要发送到服务器的证书和用于验证服务器证书的 CA 证书。

psql -U myuser2 -h 192.168.1.123 -d "sslmode=verify-ca dbname=mydatabase sslrootcert=/home/user/cert/cacert.pem sslcert=/home/user/cert/client.pem sslkey=/home/user/cert/client.key"

 🗺️这意味着 psql 客户端将使用 sslrootcert 中指定的 CA 证书验证服务器的证书。🔔由于服务器还要求客户端提供证书(因为 pg_hba.conf 中的 clientcert=verify-ca),客户端会将 sslcert 中指定的证书发送到服务器进行相互身份验证。


关于IvorySQL

IvorySQL致力于创建包容和热情的社区,坚持开放,自由,共享的精神,保持专注、专业性。

官方网址:

https://www.ivorysql.org/zh-cn/

社区仓库:

https://github.com/IvorySQL/IvorySQL

IvorySQL社区欢迎并赞赏所有类型的贡献,期待您的加入!

还有,别忘了在GitHub给我们一个 ⭐奥~

如何在 PostgreSQL 中运行 TLS 回归测试 TLS(Transport Layer Security)是一种加密协议,用于在网络上提供安全的通信。它是 SSL(Secure Sockets Layer)的继任者,广泛应用于 HTTPS、电子邮件、数据库连接等场景。回归测试是一种软件测试方法,用于确保代码更改不会影响现有功能。PostgreSQL 提供了丰富的回归测试套件,包括 TLS 相关的测试。通过本文的学习,你已经掌握了如何在 PostgreSQL 中配置和运行 TLS 回归测试。TLS 简介。 阅读详情

相关推荐

在 PostgreSQL 中如何实现数据的加密传输?

在 PostgreSQL 中实现数据的加密传输是保护敏感数据安全的重要措施。通过启用 SSL/TLS 加密或使用 SSH 隧道,可以有效地防止数据在传输过程中的窃听、篡改和泄露。在实际应用中,应根据具体的安全要求和技术环境选择合适的方法,并进行正确的配置、优化和监控,以确保数据的安全性和系统的稳定性。PostgreSQL 为用户提供了多种可靠的方式来实现数据的加密传输,使数据在网络中的传输变得更加安全可靠。通过合理的配置和管理,可以在保障数据安全性的同时,最大程度地减少对系统性能和使用便捷性的影响。

技术笔记 2239

PostgreSQL安装和开启SSL加密连接【配置单/双向认证】

服务端按需求配置postgres.conf、pg_hba.conf两个配置文件,并放入相关证书文件,客户端对应配置即可打开SSL单/双向认证连接

schwein_van的博客 1万+

DigitalOcean Kubernetes安全实战:初创团队的零信任落地指南

Kubernetes安全本质是风险优先级管理,尤其在资源受限的初创场景中。理解Kubernetes网络策略、Secret管理、RBAC权限控制等基础原理,能显著提升集群防御纵深;结合DigitalOcean托管服务(DOKS)原生能力,如自动证书轮换、节点池安全加固模板、Load Balancer TLS终止等,可低成本实现Zero Trust最小可行架构。技术价值在于将安全嵌入现有CI/CD流程,避免工具链过载;典型应用场景包括PCI DSS合规准备、SOC2 Type II审计支撑、跨境支付类SaaS生

weixin_34252090的博客 415

PostgreSQL 使用 ---- 配置 SSL/TLS/TLCP 加密传输

介绍 PostgreSQL 数据库 SSL/TLS、TLCP 加密通讯的使用

你好!我是一名互联网搬砖的菜鸟,我的博客主要记录我在工作和学习过程中积累的项目经验和技术总结。 我希望通过这些文章,能够帮助更多的开发者解决实际问题,提高开发效率。 欢迎大家订阅我的博客,期待与你们的互动和交流! 3354

Heroku免费自动化:数据科学定时任务实战指南

数据科学自动化本质是构建稳定、准时、无人值守的业务流程,其核心在于时间驱动调度、环境隔离与轻量级服务编排。不同于模型部署或事件驱动(如GitHub Actions),它更依赖可配置的定时任务机制与低运维成本的执行环境。Heroku凭借worker dyno永驻运行、免运维Python环境及免费Postgres支持,成为中小规模数据流水线的理想调度基座。本文围绕pandas清洗、SQL查询、邮件通知等典型场景,详解如何用schedule库实现人类可读的时间表达,并安全集成API密钥、PDF生成与SMTP发送,

xpmwgcwm的博客 388

2020云原生技术断层:eBPF、WASM与RuntimeClass重构容器本质

容器作为云原生的核心抽象,正从轻量隔离单元演进为涵盖CRI/CNI/CSI协议的动态调度契约;其底层原理已深度绑定Kubernetes运行时接口与内核态能力。eBPF凭借零拷贝、低延迟和内核原生可编程性,成为网络、安全与可观测性的新基础设施;WASM则以亚毫秒启动和确定性执行,在边缘计算与Serverless场景中解构传统容器边界。RuntimeClass等机制标志着容器语义向‘可信执行边界’迁移,推动平台稳定性从镜像优化转向协议兼容与内核协同。本文聚焦2020年这一关键转折点,解析eBPF与WASM如何重

xiang_fu的博客 420

PostHog 自托管实战:从一键脚本到三副本集群的完整路径

这篇文章写给正在评估 PostHog 部署的开发者与运维:从理清单机要跑哪些组件、用 Docker Compose 跑通第一个实例,到升级为生产集群,最后收拢在监控、备份与排坑清单上。 ## 先看清组件全家福:PostHog 背后到底在跑什么 第一次在一台装完 PostHog 的机器上执行 `docker compose ps`,你大概率会被二十多个容器砸一脸——到底哪个才是"PostHog

gitblog_00962的博客 855

【 ‌infrastructure】【数据中心】【AI infra】第十篇 智能计算数据中心解决方案集成测试和交付知识体系1005

路由协议需要同时处理动态拓扑(LEO)和静态拓扑(GEO),BGP 的收敛速度无法跟上 LEO 切换(秒级),而 OSPF 的 LSDB 更新过于频繁。mode 4(LACP)需要交换机支持,mode 0(round-robin)可能乱序,mode 2(active-backup)带宽利用率低。使用 DCB(Data Center Bridging)配置 PFC 优先级映射,将 RoCE 流量映射到高优先级(3 或 4),其他流量低优先级。或者使用异步 NVMe-oF,允许命令排队,容忍延迟。

weixin_49199313的博客 82

PostHog 部署完整指南:单机三步起栈,一路打通到生产级自托管

PostHog 是一个把事件分析、会话回放、特性标志与错误追踪装进同一个平台的开源产品分析工具。本文手把手带你完成 PostHog 部署:30 秒选对路线,3 条命令拉起全套服务,再看懂内部数据流向和生产自检,拿回一个开箱即用的实例。 ## 部署路线对比:30 秒对号入座 不同的使用目的对应不同的启动方式,先按下表对号,再走后面的最短路径: | 方式 | 最适合 | 前提条件 | 建议资源

gitblog_00607的博客 604

THUCNews新闻文本分类-tfidf+sklearn

本文使用的是和鲸社区现有数据集,代码也在和鲸社区公开,fork之后可以直接运行。 本文中所用的数据集清华NLP组提供的THUCNews新闻文本分类数据集的一个子集(原始的数据集大约74万篇文档,训练起来需要花较长的时间)。 本次训练使用了其中的体育, 财经, 房产, 家居, 教育, 科技, 时尚, 时政, 游戏, 娱乐10个分类,每个分类6500条,总共65000条新闻数据。项目在和鲸社区的平台上跑的,数据集直接引用了和鲸的数据集,每个分类6500条,总共65000条新闻数据。 数据集划分如下: cnews

wmq104的博客 4591

警惕AI依赖:如何避免数字水蛭侵蚀你的认知能力

在人工智能技术日益普及的今天,人机协作已成为现代工作流的核心范式。其原理在于通过算法模型辅助人类完成信息处理、内容生成等任务,从而提升效率。然而,过度依赖AI可能导致认知卸载,引发思考能力退化等潜在风险。从技术价值看,AI的核心在于增强而非替代人类智能,关键在于建立健康的协作模式。在应用场景上,无论是编程开发、内容创作还是决策分析,用户都需警惕工具依赖对深度工作、创造性思维和决策责任的侵蚀。本文聚焦于识别AI依赖的早期信号,并提供构建分阶段使用流程、将AI作为质疑者等具体策略,旨在帮助读者守护核心认知能力,

weixin_30240349的博客 626

用 Terraform 将 LiteLLM 代理网关部署到 GCP Cloud Run:组件化架构与生产级实践

本指南围绕开源仓库 `terraform/litellm/gcp` 目录下的官方 Terraform 模块,系统讲解如何以“一条命令”的方式在 Google Cloud(Cloud Run + Cloud SQL + Memorystore + GCS + Secret Manager + 全局 HTTPS 负载均衡)上落地一个组件化的 LiteLLM 代理网关。读完你将掌握镜像拉取约束与 Art

gitblog_00389的博客 370

linux应用程序段错误调试

一、堆、栈 在分析段错误之前,先了解一下什么是堆?什么是栈? 堆:一般由开发者分配释放,如果没有释放,程序结束时,在有的OS中可能会被自动释放,分配方式类似于链表。堆的操作方式为,队列优先,先进先出的原则。 栈:由操作系统自动分配,存放函数的参数值,局部变量。栈的操作方式为,先进后出的原则。 堆栈中定义了一些操作。 两个最重要的是PUSH和POP。  PUSH:操作在堆栈的顶部加入一个元素...

农村种地人 1112

Vault 1.0 到 1.9.10 变更日志深度解读:安全漏洞修复、关键特性演进与升级实践指南

本指南以 [CHANGELOG-pre-v1.10.md](https://link.gitcode.com/i/04663be30770efd4eb8ede33756bd0ac) 为唯一事实骨架,系统梳理 HashiCorp Vault 从 1.0.0 到 1.9.10 共十余个版本的关键变更:包括集成存储(Raft)从技术预览走向 GA、Tokenization/Transform 等企业级引

gitblog_00614的博客 792

ANSYS命令流黑箱揭秘:流体渗透压力载荷的七种收敛优化策略

本文深入解析ANSYS Workbench中流体渗透压力载荷的七种收敛优化策略,重点探讨接触探测点迭代逻辑、PPCN阈值动态调整及FPAT参数优化等关键技术。通过命令流示例和实战技巧,帮助工程师有效解决流体与结构相互作用仿真中的收敛难题,提升计算效率和精度。

weixin_29274337的博客 524

Obsidian与GPT协作:数学公式从KaTeX到MathJax的无缝转换实践

本文针对Obsidian用户从GPT等AI助手复制数学公式时遇到的KaTeX与MathJax格式不兼容问题,提供了高效的解决方案。重点介绍了KaTeX to MathJax插件的核心作用,它能自动将AI生成的KaTeX格式公式(如\(...\))无缝转换为Obsidian默认支持的MathJax格式($...$),实现复制粘贴后公式即时渲染,极大提升了数学笔记与AI协作的效率和流畅度。

weixin_29209825的博客 139

react-starter-kit 基础设施实战:Terraform 管理 Cloudflare 持久化资源与 Wrangler 所有权边界

> 本指南以 [infra/](https://link.gitcode.com/i/3fc8feb7cda09ae3b1cd4f1201c02c40) 目录的文档体系([AGENTS.md](https://link.gitcode.com/i/2a51ae7e5e1bde78e062fcc37fcfea41)、[README.md](https://link.gitcode.com/i/3fc

gitblog_00336的博客 128

滴滴数据分析80道面试题及参考答案

常见的模型评价指标有准确率、召回率、F1 值、均方误差、均方根误差、R 方等。准确率是指模型预测正确的样本数占总样本数的比例,它反映了模型预测的准确性。召回率是指模型预测为正例的样本中实际为正例的比例,它衡量了模型对正例的捕捉能力。F1 值是准确率和召回率的调和平均数,综合考虑了两者的平衡。均方误差是预测值与真实值之差的平方的平均值,它衡量了模型预测值与真实值的平均偏离程度。均方根误差是均方误差的平方根,与均方误差类似,但更直观地反映了误差的大小。

大模型大数据攻城狮的专栏 1698

Docker 学习:术语、使用、Compose、Swarm

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

freeking101的博客 6170

Windows 下 Claude Code Desktop 安装与使用全记录:从零到一的保姆级图文教程

本文主要介绍了Windows 下 Claude Code 安装全记录:从零到一的保姆级图文教程,希望能对学习使用 Claude Code 的同学们有所帮助。 文章目录 1. 背景 2. 安装Claude Code Desktop 3. 配置第三方API 4. 日常使用

weixin_43178406的博客 8万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Linux随记(十*)(升级harbor、k8s、openssl。k8s处理污点。k8s升级后无法使用动态pvc。iptables处理nfs漏洞)

Linux随记

Nightwish5的博客 1340

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

PostgreSQL+SSL链路测试

SSL一个各种证书在此就不详细介绍了,PostgreSQL要支持SSL的前提需要打开openssl选项,包括客户端和服务器端。7.实际上这时候就可以用psql 连接,只不过是ssl的单向认证,也就是客户端对服务器端的认证。3. 配置PG服务器部分,我的PG服务器是在postgres134用户下,因此需要。在PG的PGDATA目录中需要生成三个文件。生成server.csr(服务器签名)5. 设置pg_hba.conf。生成server.key。生成server.crt。生成root.crt。

风的专栏 2324

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

etcd\Patroni\PostgreSQL使用SSL、TLS、HTTPS

澄清:SSL/TLS并不是TCP一种加密的TCP协议,而是在TCP协议之上,HTTPS在SSL/TLS之上,TLS是新版本的SSL。除了HTTPS,其他基于TCP/IP的网络通讯,也可以使用SSL/TLS。

howard_shooter的博客 680

SSL / TLS 协议运行机制详解

pre master的存在在于SSL协议不信任每个主机都能产生完全随机的随机数,如果随机数不随机,那么pre master secret就有可能被猜出来,那么仅适用pre master secret作为密钥就不合适了,因此必须引入新的随机因素,那么客户端和服务器加上pre master secret三个随机数一同生成的密钥就不容易被猜出了,一个伪随机可能完全不随机,可是是三个伪随机就十分接近随机了,每增加一个自由度,随机性增加的可不是一。这里需要注意的是,客户端发送的信息之中不包括服务器的域名。

u014066037的博客 438

SSL/TLS协议详解以及配置实战

SSL/TLS协议是一种安全通信协议,用于在计算机网络上保护数据传输的机密性、完整性和身份验证。SSL代表安全套接字层(Secure Socket Layer)TLS代表传输层安全性(Transport Layer Security),它是SSL的继任者。// 实际上还是非对称加密的算法客户端发送一个SSL/TLS连接请求到服务器。服务器发送一个数字证书给客户端。数字证书包含服务器的公钥和其他信息。客户端验证数字证书,以确保证书来自可信的证书颁发机构,没有被篡改。

swadian2008的博客 1万+
上一篇: IvorySQL - 瀚高数据库开源生态实践 | 直播回顾
下一篇: 版本发布 | IvorySQL Release - 2.2
IvorySQL
博客等级 码龄5年 745粉丝 565原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值