如何在 PostgreSQL 中运行 TLS 回归测试

自建Bitwarden密码管理服务:Docker+PostgreSQL生产级部署指南 密码管理是数字身份安全的基石,其核心在于数据主权、加密可靠性与服务可用性。Bitwarden作为开源、全平台、端到端加密的密码管理方案,通过自托管(Self-Host)实现数据完全可控;Docker提供环境隔离与部署一致性,规避Rust编译、依赖冲突等运维陷阱;PostgreSQL则保障高并发下的数据强一致与企业级备份能力——相比SQLite,它在同步延迟、故障率和可维护性上具备压倒性优势。该组合已广泛应用于中小团队、SaaS服务商及合规敏感场景,支撑多设备实时同步、审计日志溯源与零信任架构落地。本文聚焦生 阅读详情

概述

本文将分享一个简单的步骤,介绍如何在 PostgreSQL 中运行 SSL/TLS 回归测试。

Postgres 回归测试

每当我们想要添加新功能或进行修复时,都应该运行 PostgreSQL 提供的测试,以确保没有损坏。如果新功能或修复没有相应的测试,我们应该考虑添加一些,以确保在未来进行其他更改时不会出现问题。PostgreSQL 提供了一份全面的文档,解释了所有可用的测试。

例如,如果您想运行快速回归测试以检查任何“核心”功能是否可能存在问题,可以在构建树的临时安装中运行 make check,或者针对正在运行的 PostgreSQL 服务器运行 make installcheck。make check 和 make installcheck 仅会测试 PostgreSQL 服务器的内置功能。要对已选择构建的模块运行所有测试,包括核心测试,您需要运行 make check-world 或 make installcheck-world,分别对应于构建树中的临时安装或正在运行的 PostgreSQL 服务器。然而,某些功能在运行 make check-world 或 make installcheck-world 时仍然不会被测试,例如与安全相关的功能、SSL、Kerberos 等。原因之一是这些测试用例需要一些特殊设置。要对这些功能运行回归测试,如文档所述,您需要运行类似 make check-world PG_TEST_EXTRA='kerberos ldap ssl load_balance' 的测试。

运行 SSL/TLS 回归测试

要运行与 SSL/TLS 相关功能的回归测试,首先需要编译启用了 SSL 库的 PostgreSQL。例如,运行以下命令将使用 OpenSSL 库编译 PostgreSQL:

git clone https://github.com/postgres/postgres.git
cd postgres
./configure --prefix=/tmp/pgapp --enable-tap-tests CC="gcc -std=gnu99" --with-openssl
make -j
make check-world

如果 make check-world 没问题,那么您可以通过检查 src/test/ssl/tmp_check/log 中的日志来确认是否已执行 SSL/TLS 回归测试。

$ cat *
[11:27:05.488](0.021s) 1..0 # SKIP Potentially unsafe test SSL not enabled in PG_TEST_EXTRA
[11:27:05.584](0.011s) 1..0 # SKIP Potentially unsafe test SSL not enabled in PG_TEST_EXTRA
[11:27:05.671](0.011s) 1..0 # SKIP Potentially unsafe test SSL not enabled in PG_TEST_EXTRA

日志显示,所有三个 SSL/TLS 回归测试(001_ssltests.pl、002_scram.pl 和 003_sslinfo.pl)都已被跳过。

换句话说,如果您的修复与 SSL/TLS 相关,但您仅在修复上运行 make check-world,则可能会破坏某些 SSL/TLS 功能。要使用现有的回归测试用例测试与 SSL/TLS 相关的功能,您需要使用以下命令运行 SSL/TLS 测试:

cd src/test/ssl
make check PG_TEST_EXTRA=ssl

预期结果类似于以下内容:

# +++ tap check in src/test/ssl +++
t/001_ssltests.pl .. ok     
t/002_scram.pl ..... ok    
t/003_sslinfo.pl ... ok    
All tests successful.
Files=3, Tests=247, 11 wallclock secs ( 0.05 usr  0.00 sys +  2.01 cusr  1.59 csys =  3.65 CPU)
Result: PASS

然后,您应该在 src/test/ssl/tmp_check/log 中看到如下日志,包含更多详细信息。

$ ls -l
total 164
-rw------- 1 david david 82348 Apr 19 11:39 001_ssltests_primary.log
-rw------- 1 david david 12408 Apr 19 11:39 002_scram_primary.log
-rw------- 1 david david 16402 Apr 19 11:39 003_sslinfo_primary.log
-rw-rw-r-- 1 david david 30451 Apr 19 11:39 regress_log_001_ssltests
-rw-rw-r-- 1 david david  4921 Apr 19 11:39 regress_log_002_scram
-rw-rw-r-- 1 david david  3880 Apr 19 11:39 regress_log_003_sslinfo

如果仔细查看日志,您可能会发现许多消息包含 certificate,如下所示。

$ cat tmp_check/log/* | grep certificate
...
[11:39:27.633](0.000s) ok 31 - cert root file that contains two certificates, order 2: no stderr
[11:39:27.717](0.027s) ok 36 - connect with sslcertmode=require fails without a client certificate
[11:39:27.717](0.000s) ok 37 - connect with sslcertmode=require fails without a client certificate: matches
[11:39:27.882](0.028s) ok 48 - mismatch between host name and server certificate sslmode=require
...

如何生成 SSL/TLS 证书

然后,您可能会有疑问,比如:“证书来自哪里?”以及“证书是如何生成的?”

实际上,所有证书都是通过 src/test/ssl 目录下的 Makefile 生成的,并作为测试用例的一部分提交到 PostgreSQL。通常情况下,除非您有一些需要新证书或不同证书的更改,否则不需要重新生成它们。然后,您可以运行以下命令:

make sslfiles-clean
make sslfiles

之后,如果您运行 git status,您应该会发现 src/test/ssl/ssl 目录下的所有文件都已被更改。这时,如果您运行之前的命令 make check PG_TEST_EXTRA=ssl,那么它应该会使用新生成的证书进行回归测试。我要在这里提到证书的原因是,证书在 SSL/TLS 回归测试中扮演着非常重要的角色。

总结

本文描述了运行 SSL/TLS 相关回归测试的简单过程。您可以参考此过程对 Kerberos、LDAP 等进行类似的回归测试。

关于 IvorySQL

lvorySQL 是由瀚高股份主导研发的一款开源的兼容 Oracle 的 PostgreSQL。IvorySQL 与 PostgreSQL 国际社区紧密合作,保持与最新 PG 版本内核同步,为用户提供便捷的升级体验。基于双 Parser 架构设计,100% 与原生 PostgreSQL 兼容,支持丰富的 PostgreSQL 周边工具和扩展,并根据用户需求提供定制化工具。同时,IvorySQL 4.0 提供更全面灵活的 Oracle 兼容功能,具备高度的 SQL 和 PL/SQL 兼容性能够为企业构建更加高效、稳定和灵活的数据库解决方案。

  • 官网:https://www.ivorysql.org
  • GitHub(欢迎点击 star 收藏哦):https://github.com/IvorySQL/IvorySQL
PostgreSQL源码编译安装的工程化实践:从可运行到可运维 PostgreSQL源码编译不仅是执行configure-make-install的流程,更是面向生产环境的软件构建工程——它涉及系统ABI兼容性、依赖隔离、配置语义化、构建目标粒度控制及安装产物可审计性等核心能力。理解glibc版本约束、OpenSSL头文件探测机制、--sysconfdir与systemd服务的路径协同,是规避‘能编译但不可部署’陷阱的关键;而pg_stat_statements扩展启用失败、动态链接混用系统库、initdb后认证配置失效等高频问题,本质都源于编译阶段对configure 阅读详情

相关推荐

Memos集成Authentik SSO:TLS证书配置全解析与实战

在构建现代Web应用架构时,单点登录(SSO)是提升用户体验和安全管理的核心技术。其原理是通过一个统一的认证中心来管理多个应用的访问权限,核心价值在于简化登录流程、集中权限控制并增强安全性。在工程实践中,将自建服务(如Memos、Gitea)通过开源SSO平台(如Authentik)进行集成是常见场景。这一过程常涉及反向代理、服务间通信等基础架构,而TLS证书配置往往是成功集成的关键挑战,尤其是在处理浏览器到代理、代理到认证服务、认证服务到后端应用等多段HTTPS连接时。本文聚焦于解决Authentik与M

ckkay800264的博客 403

PostgreSQL 用 Rust 重写后通过了 100% 回归测试,性能飙了 300 倍

用 Rust 重写 PostgreSQL 的革命性尝试 pgrust 是一个用 Rust 重写 PostgreSQL 的开源项目,目标是在保持与 PostgreSQL 18.3 完全兼容的同时,解决原生 PG 在架构上的历史包袱。 核心优势: 性能提升:事务负载比原生 PG 快 50%,分析负载提升 300 倍。 线程模型替代进程模型:减少连接开销,支持更高并发。 内存安全:Rust 的所有权机制消除内存泄漏和数据竞争风险。 完全兼容:磁盘格式和协议与 PostgreSQL 18.3 一

liuzhupeng的专栏 460

PostgreSQL 16深度解析(从16.0-16.8)

PostgreSQL 16系列通过持续迭代,在保持ACID特性的同时,显著提升了分析型负载处理能力。从16.0到16.8的演进路线,清晰展现了开源数据库在云原生时代的进化方向。对于日均数据量超过TB级的企业,建议优先采用16.5+版本以获得向量搜索能力;对于传统OLTP场景,16.3的在线DDL特性可显著降低运维复杂度。

一个老Java开发的自白 2231

PostgreSQL 日报|PG18.5 回归测试崩溃问题(8 月 12 日)

该讨论围绕 Databricks 的 Dhruv Aron 提交的一个补丁展开,该补丁提议用两个平坦数组(buckets 和 entries)替换现有的 dynahash 结构,为共享缓冲区查找实现一个专用哈希表。作为 OpenAI 任职时间最长的高管之一,他在内部信中表示,期待从新的位置继续支持 OpenAI 的使命。讨论围绕逻辑复制的冲突日志表(CLT)展开。纳入受影响的关系类型,但 Nathan Bossart 认为这是错误的:TOAST 表没有可恢复的统计信息,且代码也未正确继承主表的。

IvorySQL的博客 216

Docker Compose 部署 pgAdmin 4:生产级 PostgreSQL 图形化管理实践

pgAdmin 是 PostgreSQL 官方推荐的 Web 版图形化管理工具,其核心价值在于提供跨平台、零客户端安装、功能完备的数据库运维界面。基于 Docker 的容器化部署,可彻底解决传统安装方式带来的版本碎片、依赖冲突与环境不一致问题;而 Docker Compose 进一步实现了配置即代码、多环境隔离与资源可控。结合 SQLite 元数据持久化、Nginx 反向代理、HTTPS 终止及 Basic Auth 认证等工程实践,能构建出高可用、可审计、易扩展的标准化 GUI 管理入口。本文聚焦 pgA

weixin_34245749的博客 479

CentOS 6.4 手动部署 Discourse 全流程:PostgreSQL Redis Nginx Unicorn

Discourse 是一款基于 Ruby on Rails 构建的现代化开源社区论坛系统,其运行依赖 PostgreSQL 强一致性事务、Redis 高性能缓存与消息队列、Nginx 反向代理及 Unicorn 应用服务器等核心组件。理解各组件版本兼容性、进程通信机制与系统级调优(如文件描述符、inotify 限制、内存分配策略)是保障高可用社区服务的基础。在老旧但广泛存在的 CentOS 6.4 环境中,因内核、glibc 和 OpenSSL 版本限制,无法使用 Docker 官方方案,必须通过源码编译方

weixin_33749131的博客 384

在 PostgreSQL 中设置调试环境以更好地理解 OpenSSL API

本文将介绍如何设置一个 gdb 调试环境,以深入了解 TLS 连接并更好地理解 PostgreSQL 中使用的 OpenSSL API。在本文中,解释了如何设置一个简单的 gdb 调试环境,以深入了解 OpenSSL,希望它对您有所帮助。

IvorySQL的博客 688

AI重构SSL/TLS证书管理:从智能监控到自动化诊断与修复

SSL/TLS证书作为保障网络通信安全的基础协议,其配置错误、过期失效等问题常导致服务中断。传统人工排查依赖经验,效率低下且易出错。通过引入AI技术,可构建智能运维体系:利用时间序列异常检测算法监控证书有效期、握手成功率等关键指标,实现从被动响应到主动预警;结合知识图谱与LLM大语言模型,对证书验证失败等复杂问题进行多维度根因分析,快速定位问题源头;最终与自动化运维平台集成,实现证书自动续期、配置修复等操作。这种AI驱动的解决方案,尤其适用于微服务架构和云原生环境,能显著提升系统稳定性与运维效率,将工程师从

weixin_30608503的博客 581

UltraTears 内存管理内幕:userfaultfd 与 12GB 虚拟窗口如何支撑整个游戏

UltraTears 是《塞尔达传说:王国之泪》(Tears of the Kingdom 1.4.3)的非官方原生 PC / Steam Deck 移植,基于静态重编译(static recompilation)技术。它的内存管理核心是一套"预留先行、按需落地"的 guest 虚拟窗口,以及建立在 Linux `userfaultfd` + `PAGEMAP_SCAN` 之上的内核级"写监视"(

gitblog_00820的博客 390

Ubuntu 20.04 下用 Snap 部署 Nextcloud 的确定性实践

Nextcloud 是主流开源私有云存储平台,其稳定运行依赖 PHP 运行时、数据库、Web 服务器与 TLS 协议栈的精准协同。在 Ubuntu 20.04 这类 LTS 系统中,APT 仓库的组件版本组合常与 Nextcloud 23+ 的依赖要求产生隐性冲突,典型如 PHP opcache 预加载限制、MySQL 8.0 认证插件不兼容、Nginx SSL 配置碎片化及文件权限策略冲突。Snap 通过封装完整运行时(PHP 8.1、PostgreSQL 14、nginx 1.22)、内核级沙盒隔离与自

weixin_33725270的博客 427

PostgreSQL 18 Beta 2 编译部署与生产避坑指南

PostgreSQL 是一款开源关系型数据库,其 Beta 版本常被误用于生产环境,实则专为开发者验证兼容性与新特性而设计。理解 Beta 构建原理、源码编译机制及扩展适配逻辑,是保障 AI 应用向量检索(如 pgvector)和等保三级合规落地的技术前提。PostgreSQL 18 Beta 2 引入 ICU 国际化支持重构、WAL 格式微调、MERGE 语法增强等关键变更,直接影响中文分词、Unicode 排序、备份恢复与考试认证场景。正确使用需聚焦 configure 参数博弈、make world

weixin_42528780的博客 354

Win11Debloat 完整使用指南:10 分钟给 Windows 11 做减法,免费可逆还带后悔药

Win11Debloat 是一个免费开源的 PowerShell 脚本,专门给 Windows 10/11 做"减法":批量卸载预装应用、关掉遥测追踪、精简任务栏和开始菜单。不用装任何软件,不用翻几十个系统设置,照本教程操作 10 分钟以内就能完成一轮完整精简,而且每一步改动都能单独退回来。 ## 先自检:你的系统该清理了吗? 在动手之前,对照下面 4 个信号判断自己到底需不需要它: - *

gitblog_00279的博客 783

matianl:SAP 最详细的权限管理解析

上文所说的系统自带权限对象与权限字段仅能满足有限的需要,其权限审核的逻辑也是系统硬编码了的,我们能做的只是是否启用某项权限对象的检查(使用SU22)。如果需要自定义,通过SU20、SU21定义即可。

matinal 當冬夜漸暖 。公众号:matinal 2155

探索pgBackRest:超可靠PostgreSQL备份与恢复工具

pgBackRest是一个专为PostgreSQL设计的高效备份和恢复解决方案,无论数据库规模多大,工作负载多繁重,它都能提供可靠的保障。最新稳定版本是[v2.49](https://github.com/pgbackrest/pgbackrest/releases/tag/release/2.49),在GitHub上你可以找到其详细信息。 如果你对这个项目感兴趣,记得给我们一个星星,以支持我们...

gitblog_00099的博客 638

哨兵一号数据snap预处理_利用SNAP软件进行Sentinel-1A卫星微波影像的预处理

利用SNAP软件对雷达影像进行预处理,主要包括热噪声去除、轨道文件校正、辐射定标、滤波校正、多普勒地形校正,最终获得入射角和后向散射信息。数据:本次实验所用数据为哨兵一号(Sentinel-1A)干涉宽幅模式(Interferometric Wideswath,IW)下经过多视处理和地距转换的GRD格式产品一般处理流程如下:0 SNAP软件安装软件安装:安装成功后打开SNAP后如图所示:1 数据...

weixin_30000407的博客 1万+

用Arduino和FS-i6X遥控器,从零开始打造你的第一只仿生扑翼蝴蝶(附完整代码解析)

本文详细介绍了如何利用Arduino和FS-i6X遥控器从零开始制作仿生扑翼蝴蝶,包括硬件准备、电路连接、代码解析和调试技巧。通过完整的代码示例和参数说明,帮助读者快速掌握仿生机器人的制作要点,实现蝴蝶的自然飞行效果。

weixin_28727975的博客 310

oh-my-opencode-slim Codemap Skill 实战指南:基于 Hash 状态实现仓库地图的增量维护与 Agent 协同

面对一个陌生仓库,Orchestrator 与 Fixer 等 Agent 常常无从下手:不知道目录职责、找不到入口点、也难以判断代码改动会影响哪些模块。oh-my-opencode-slim 内置的 **Codemap Skill** 以 `src/skills/codemap/` 为契约,通过 `scripts/codemap.mjs` 生成并维护「按目录分层的 `codemap.md` 仓库

gitblog_01092的博客 480

Rust 语言入门

Rust 使 对您的编辑或工具或代码所在的位置没有特定要求,因此 如果您更喜欢使用集成开发环境 (IDE) 而不是 命令行,请随意使用您最喜欢的 IDE。对于简单的程序来说,只编译 是可以的,但作为你的项目 增长,您将需要管理所有选项并轻松共享您的 法典。接下来,我们将向您介绍 Cargo 工具,它将帮助您编写 真实世界的 Rust 程序。现在您已经安装了 Rust,是时候编写您的第一个 Rust 程序了。这不重要 到你的代码所在的 Rust,但对于本书中的练习和项目, 我们建议在你的主目录中创建一个。

JohnChen(Net) 1476

Jitsi Meet安全审计实战:从自动化扫描到手动渗透测试的完整指南

开源视频会议系统的安全性是保障企业通信隐私与数据完整性的核心议题。其安全机制不仅依赖于端到端加密等基础原理,更与系统配置、依赖项管理和网络防护等工程实践紧密相关。深入的安全审计能有效识别从应用层到基础设施层的潜在风险,为高价值的企业内部部署和客户定制化服务提供关键保障。本文聚焦于Jitsi Meet这一广泛应用的开源方案,通过结合自动化漏洞扫描与手动渗透测试的实战方法,系统性地拆解其安全评估流程,涵盖依赖项审计、配置核查、身份认证测试及WebRTC媒体流安全等关键环节,旨在为运维工程师和安全架构师提供一套可

weixin_33913332的博客 529

别再到处找密钥了!手把手教你搞定Halcon 24.11/25.05的试用授权(附每月更新提醒)

本文详细介绍了Halcon 24.11/25.05试用授权的获取与配置方法,包括解密新版授权机制、快速配置指南、每月更新规律及多版本共存管理技巧。帮助开发者避免常见授权问题,提升工作效率,特别适合机器视觉领域的初学者和专业人士。

weixin_29238147的博客 1184

YOLO26科研升级:BiFPN双向特征金字塔,让多尺度特征融合精度再突破

在目录下,新建AddModules文件夹,将bifpn.py放入其中。

LXY_LOVE36的博客 559

Okteto:让 Kubernetes 开发回归本地编码体验

Kubernetes 作为现代云原生应用的运行底座,其声明式、终态化的设计虽保障了生产稳定性,却显著抬高了开发者日常调试与迭代的门槛。传统‘本地写代码→构建镜像→推送部署’流程带来环境漂移、反馈延迟和调试失能三大痛点。Okteto 通过 CLI 驱动的运行时重定向机制,在不修改原有镜像的前提下,实现本地代码实时同步至 K8s Pod、原生命令接管与热重载支持,将开发体验从‘远程部署’重构为‘远程环境+本地交互’。它天然适配 VS Code/JetBrains 等主流 IDE,无缝集成 CI/CD,并支持私有

weixin_34238633的博客 436

【MATLAB例程】三维下的IMM(交互式多模型),模型使用CV(匀速)和CA(匀加速),滤波使用EKF。附完整代码

CV模型:状态包含位置、速度和零加速度(9维状态),状态转移矩阵忽略加速度项CA模型:完整包含位置、速度和加速度(9维状态),状态转移矩阵包含二次项过程噪声矩阵Q分别根据两种模型的运动特性推导。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 561
上一篇: IvorySQL 4.4 发布
下一篇: DeepSeek 加持!IvorySQL 文档智能助手正式上线!
IvorySQL
博客等级 码龄5年 745粉丝 565原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值