openGauss与PostgreSQL对比测试SSL之自签名私有证书测试

news/2024/7/24 7:49:56 标签: postgresql, ssl, 数据库, openGauss

openGauss 与 PostgreSQL 对比测试 SSL 之自签名私有证书测试

SSL 传输加密简介

SSL 认证通过使用 SSL 证书确保客户端检查服务端证书或者服务器检查客户端证书,SSL 认证除了加密数据,也可以识别目标端的真伪,防止网络中间人的伪装攻击。

单向认证与双向认证

单向认证

单向认证一般是指客户端只验证服务器证书的有效性,而服务端不验证客户端证书的有效性。服务器加载服务端证书信息并发送给客户端,客户端使用根证书来验证服务器端证书的有效性。

双向认证

双向认证是指客户端验证服务器证书的有效性,同时服务器端也要验证客户端证书的有效性,只有两端都认证成功,连接才能建立。

客户端验证服务器证书有如下两种模式:

  1. 客户端连接参数 SSLMODE 设置为 verify-ca 仅校验数据库证书真伪。
  2. 客户端连接参数 SSLMODE 设置为 verify-full 校验数据库证书真伪及。

通用名 CN 匹配数据库连接的 hostname

服务端验证客户端证书有如下三种模式:

  1. 数据库认证文件 pg_hba.conf 配置认证选项 clientcert=verify-ca 仅验证客户端证书真伪,认证方法可选。
  2. 数据库认证文件 pg_hba.conf 配置认证选项 clientcert=verify-full 验证客户端证书真伪及 CN 匹配数据库连接用户名或映射匹配,认证方法可选。
  3. 数据库认证文件 pg_hba.conf 配置认证方法 cert,免密验证客户端证书真伪及 CN 匹配数据库连接用户名或映射匹配。

cert 认证实际是基于 clientcert=verify-full 认证选项的 trust 方法认证。

SSL 编译支持

PostgreSQL 编译需打开如下选项,同时需要安装 openssl

--with-openssl
--with-includes=/usr/include/openssl

openGauss 源码编译时不需要打开上面两个选项,否则编译会报错。

客户端 psql 或者 gsql 需要检查 libpq 是否有 ssl 动态库的调用。

$ ldd /opt/pgsql/lib/libpq.so |grep libssl
    libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f7f29cc4000)
$ ldd /opt/og/lib/libpq.so |grep libssl
    libssl.so.1.1 => /opt/og/lib/libssl.so.1.1 (0x00007f9d39dd2000)

自签名私有证书测试

测试环境下可以使用自签名私有证书,只用于测试传输加密,不验证身份,也可使用自签名 CA 证书来进行加密及身份验证。实际生产环境需要使用权威的 CA 认证中心签发的数字证书。

本文先测试最简单的自签名私有证书。

生成私钥

$ openssl genrsa -out server.key 2048

生成证书请求文件

$ openssl req -new \
-config openssl.cnf \
-key server.key \
-subj "/CN=foo" \
-out server.csr

注意 openGauss 需要使用-config 指定 openssl.cnf 文件,centos7 下默认路径为/etc/pki/tls/openssl.cnf,PostgreSQL 不需要使用-config 选项。

证书自签名

$ openssl x509 -req -in server.csr -days 365 \
-extfile openssl.cnf \
-extensions v3_ca \
-signkey server.key \
-out server.crt

PostgreSQL 不需要使用-config 选项。

传输证书及密钥文件至服务器名

$ chmod 0600 server.crt server.key
$ cp server.crt server.key $PGDATA

PGDATA 为实际 openGauss 或 PostgreSQL 数据目录。

数据库配置

pg_hba.conf 文件配置 hostssl 条目,认证方法可选。

hostssl  all  all  ***.***.***.***/0  md5

postgreql.conf 文件配置如下参数。

ssl=on
ssl_cert_file= 'server.crt'
ssl_key_file= 'server.key'

重启数据库服务,然后进行测试。

先测试 openGauss,可以看到建立了 SSL 连接。

$ gsql -h ***.***.***.*** -p6432 -Upostgres postgres
Password for user postgres:
gsql ((GaussDB Kernel V500R001C20 build ) compiled at 2021-03-09 18:30:51 commit 0 last mr  )
SSL connection (cipher: DHE-RSA-AES128-GCM-SHA256, bits: 128)
Type "help" for help.
postgres=>

再测试 PostgreSQL。

$ psql -h***.***.***.***
Password for user postgres:
psql (12.6)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.
postgres=#

总结

1.PostgreSQL 需要编译支持 opensslopenGauss 已经内置支持。

2.openGauss 不会识别操作系统层的 openssl 默认配置文件,需要拷贝指定参数,否则会报错找不到配置文件。


http://www.niftyadmin.cn/n/5422867.html

相关文章

计算机网络—VLAN 配置

目录 1.拓扑图 2.实验环境准备 2.关闭不相关接口,并配置 Trunk 3.创建 VLAN 4.为客户端配置 IP地址 5.检测设备连通性,验证 VLAN 配置结果 6.配置 Hybrid 端口 7.配置文件 1.拓扑图 2.实验环境准备 在S1和S2上创建Eth-Trunk 1并配置该Eth-Trunk…

【每日前端面经】2024-03-11

【每日前端面经】2024-03-11 欢迎订阅我的前端面经专栏: 每日前端面经 本期题目来源: 牛客 Vue 响应式原理 Vue 独特的响应式系统:当 JavaScript 对象发生变化时,视图会自动更新。核心设计思想是数据劫持观察者模式 Vue 使用了一个名为 Observer 的…

ChatGPT免费使用网站分享大全,可以直接访问

方法在结尾 介绍: ChatGPT是OpenAI公司开发的一种基于大规模预训练的语言模型。作为GPT-3系列的最新版本,GPT-3.5 Turbo集成了最新的技术改进,具备了更强大的对话生成能力。 GPT-3.5 Turbo是一个自动对话系统,它能够理解和生成…

吴恩达机器学习笔记 十七 通过偏差与方差诊断性能 正则化 偏差 方差

高偏差(欠拟合):在训练集上表现得也不好 高方差(过拟合):J_cv要远大于J_train 刚刚好:J_cv和J_train都小 J_cv和J_train与拟合多项式阶数的关系 从一阶到四阶,训练集的误差越来越小…

小程序连接蓝牙

小程序 蓝牙功能 1.授予蓝牙权限2.蓝牙初始化3.监听寻找新设备4.搜索新设备5.建立连接⭐⭐⭐⭐⭐⭐⭐6.监听蓝牙低功耗连接状态改变事件8.监听特征值变化9.发送数据 1.授予蓝牙权限 //1.蓝牙授权 const authBlue (callback, initApp) > {app initApp;//鉴定是否授权蓝牙w…

怎么把多首歌曲合并一首?轻松几步教你合并音乐!

音乐合并播放,听起来像是一个简单的操作,但实际上涉及到的技术和步骤却不少。音乐的合并不仅仅是将两首或多首曲目简单地串联在一起,更需要考虑到音乐的节奏、旋律、和声等要素,以及合并后的整体效果。在数字音乐日益普及的今天&a…

Python网站的搭建和html基础

1.Python网站代码及讲解 一般我们搭建小型的网站就用flask库就行了。 (1)安装flask库 安装完python后,按住windows徽标键和r,弹出“运行”,在里面输入cmd。 回车打开,输入“pip install flask”。 (2&am…

新一代 Git 工具,AI 赋能!深度集成、简化操作 | 开源日报 No.194

gitbutlerapp/gitbutler Stars: 7.2k License: NOASSERTION gitbutler 是一个基于 Git 的版本控制客户端。旨在为现代工作流程构建一个全新的 Git 分支管理工具。 虚拟分支:可以同时在多个分支上工作,而无需不断切换分支简化提交管理:通过拖…