首页 > 其他分享 >[postgres]使用SSL加密连接

[postgres]使用SSL加密连接

时间:2024-10-11 23:10:24浏览次数:7  
标签:加密 postgres crt ssl ca 证书 SSL key

前言

因数据加密传输的要求,应用连接postgres也要配置ssl连接加密,从而防止数据泄露或被篡改。

启用ssl连接有利于加强数据安全性,但也会增加连接通信的成本。对于企业级应用,当然还是以安全性为首位。

本文使用的postgres版本为15.3

配置步骤

  1. 企业内一般用权威CA机构签发的证书,本地开发测试的话,还是自签名证书方便点。注意如果使用自签名证书的话,根证书的私钥文件最好不要泄露。
# 生成根证书
openssl req -new -nodes -text -out ca.csr -keyout ca.key -subj "/CN=pg1.rainux.int"
openssl x509 -req -in ca.csr -text -days 3650 -extfile /etc/ssl/openssl.cnf -extensions v3_ca -signkey ca.key -out ca.crt

# 生成服务器端证书
openssl req -new -x509 -days 365 -nodes -text -out server.crt -keyout server.key -subj "/CN=pg1.rainux.int"
openssl req -new -nodes -text -out server.csr -keyout server.key -subj "/CN=pg1.rainux.int"
openssl x509 -req -in server.csr -text -days 365 -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
  1. 编辑postgresql.conf来启用ssl连接。三个证书和私钥文件可以放到数据目录,和postgresql.conf在一个层级。或者放到其它目录,配置改为绝对路径。
ssl = on
ssl_ca_file = 'ca.crt'
ssl_cert_file = 'server.crt'
ssl_key_file = 'server.key'
  1. 编辑pg_hba.conf,允许远程客户端的ssl请求
# 原先为 host all all all scram-sha-256
# 单向验证
hostssl all all all scram-sha-256
# 双向验证客户端的ca证书和客户端证书
hostssl all all all scram-sha-256 clientcert=verify-ca
# 双向验证客户端的ca证书及客户端证书,并要求证书中的CN部分与用户名或其它映射机制相匹配
hostssl all all all scram-sha-256 clientcert=verify-full
  1. 重启postgres
  2. psql客户端连接,连接参数中指定使用ssl
# 方式1: 要求建立ssl连接
psql 'host=127.0.0.1 port=5432 dbname=postgres user=postgres sslmode=require'

# 方式2: 要求验证ca证书
psql 'host=127.0.0.1 port=5432 dbname=postgres user=postgres sslmode=verify-ca sslrootcert=ca.crt'

# 方式3: 要求验证客户端证书
## 生成客户端证书
openssl req -new -x509 -days 365 -nodes -text -out client.crt -keyout client.key -subj "/CN=pg1.rainux.int"
openssl req -new -nodes -text -out client.csr -keyout client.key -subj "/CN=pg1.rainux.int"
openssl x509 -req -in client.csr -text -days 365 -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt
## 使用客户端证书连接
psql 'host=127.0.0.1 port=5432 dbname=postgres user=postgres sslmode=verify-ca sslrootcert=ca.crt sslkey=client.key sslcert=client.crt'

参考

标签:加密,postgres,crt,ssl,ca,证书,SSL,key
From: https://www.cnblogs.com/XY-Heruo/p/18459540

相关文章

  • AES加密,全平台实现!
    前言今天我们来聊聊数据加密与隐私相关话题。本人开发的加密工具,欢迎体验!https://www.pgyer.com/cryptotools。AES加密,通俗的话来讲,就是用一个key把原数据变成一个新数据,也通过这个key还原成原数据。所以,它是一种对称的加密方式。只要别人不知道这个key,就无法解开数据的内......
  • peer closed connection in SSL handshake
    报错信息:2024/10/1110:45:13[error]11933#0:*437581086peerclosedconnectioninSSLhandshake(104:Connectionresetbypeer)whileSSLhandshakingtoupstream,client:69.69.69.8,server:127.0.0.1,request:"POST/car/lsimpleHTTP/1.1",upstre......
  • 安卓APK资源混淆加密重签名工具1.8.1更新 - 新增资源防解压功能, 优化大文件处理
    安卓APK资源混淆加密重签名工具,可以加固APK文件,对APK资源文件进行加密混淆处理,主要包含DEX代码混淆加密,字符串加密,Assets文件加密,防止反编译等功能,可以有效保护APK的内部代码和资源,防止APK被解包,逆向分析等.主要特性和功能点 1.支持修改APP基本信息,包括APP......
  • 有一种能力认证,叫做工信人才PostgreSQL认证
    有想往数据库行业发展的人要找工作跳槽;有使用PostgreSQL数据库的员工想要升职加薪;有使用PostgreSQL数据库的企业想要招标投标信创项目;来看看工信人才PostgreSQL认证。工信人才PostgreSQL认证是由工业和信息化部人才交流中心主办、北京神脑资讯技术有限公司承办的一种能力......
  • crit: Microsoft.AspNetCore.Server.Kestrel[0] Unable to start Kestrel. Interop+Cr
    域名证书没有放在指定的位置错误信息crit:Microsoft.AspNetCore.Server.Kestrel[0]UnabletostartKestrel.Interop+Crypto+OpenSslCryptographicException:error:2006D080:BIOroutines:BIO_new_file:nosuchfileatInterop.Crypto.CheckValidOpenSslHandle(Saf......
  • 在哪还能申请到一年期免费SSL证书?
    SSL证书是一种网络安全协议,用于在客户端和服务器之间建立加密链接,确保数据传输的安全性。以下是使用JoySSL申请SSL证书的详细步骤:1.选择SSL证书类型首先,访问JoySSL官网,根据您的需求选择合适的SSL证书类型。JoySSL提供多种类型的证书,包括域名型(DV)、企业型(OV)和增强型(EV)证书。......
  • 宝塔开启ssl后https访问不了
    宝塔面板开启SSL后如果出现HTTPS访问不了的情况,可以按照以下步骤进行排查和解决:检查证书是否正确安装:确认SSL证书是否已经正确安装并配置到对应的站点上。检查证书文件(通常包括公钥证书.crt文件和私钥.key文件)是否完整且无误。检查域名解析:确保你的域名已经正确解析到......
  • android开发编译openssl源代码生成libcrypto.so和libssl.so两个动态库用于android ndk
    openssl编译本篇文章的操作是在Linux环境之下,在虚拟机ubuntu20版本上操作的步骤1.openssl下载解压tar包openssl下载地址:https://openssl-library.org/source/下载完解压:tar-zxvfopenssl-3.3.2.tar.gz//我这里下载openssl-3.3.2.tar.gz版本2.编译openssl库,得......
  • 嘟嘟牛在线登陆加密分析-RPC调用
    加密参数JADX反编译后搜索代码user/login基本可以确定就是从这里发起网络请求跟进addRequestMap方法分析这一看逻辑就清晰了先添加一个时间戳,在对sign进行加密后在调用encodeDesMap进行加密最后put到请求中先分析encodeDesMap有KEY和IV,不是AES就是DES加密encryp......
  • SpringBoot整合MD5加密完成注册和登录
    目录md5是什么?MD5的主要特点包括:MD5的应用场景市面上比较流行的加密方式引入相关依赖在src/main/resources/application.yml中添加配置加密工具类创建User实体类创建UserRepository接口创建UserService类创建UserController类测试APImd5是什么? ......