PostgreSQL數據庫配置SSL操作說明書

背景:

因為postgresql或者mysql目前通過docker安裝,只需要輸入主機IP、用戶名、密碼即可訪問成功,這樣其實是不安全的,可能會通過一些手段獲取到用戶名密碼導致數據被竊取。而ES、kafka等也是通過用戶名/密碼方式連接,但是這些數據重要性相比較于數據庫要低一些,畢竟都是一些日志以及消息而已。

解決方案:

通過開啟SSL證書認證的方式加強防護,配合使用防火墻策略白名單方式、增加密碼復雜度。本文檔主要是介紹開啟SSL認證方式。

具體實施步驟:

一、創建目錄存儲配置信息

1、mkdir   /postgre 
2、進入 文件夾
cd postgre
3、創建目錄 
mkdir certs
4、創建目錄 
mkdir data

二、創建Openssl配置文件

1、進入cd /postgre/certs 目錄
2、執行 touch openssl.cnf
3、修改文件vim openssl.cnf
4、將下面信息粘貼至文件中
[ req ]
default_bits       = 2048
distinguished_name = req_distinguished_name
req_extensions     = req_ext
prompt             = no[ req_distinguished_name ]
C  = CN
ST = Beijing
L  = Beijing
O  = MyOrg
OU = IT
CN = postgres
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
IP.1 = 192.168.2.1  #數據庫主機地址
DNS.1 = postgres    #數據庫用戶名

如下圖:
在這里插入圖片描述

三、創建SSL證書生成腳本generate_certs.sh

1、進入 cd /postgre/certs 目錄
2、touch  generate_certs.sh
3、vim generate_certs.sh
4、將下面信息粘貼至文件中
#!/bin/bash
ROOT_KEY="root.key"
ROOT_CRT="root.crt"
SERVER_KEY="server.key"
SERVER_CSR="server.csr"
SERVER_CRT="server.crt"
DAYS=365
BITS=2048echo "生成根私鑰..."
openssl genpkey -algorithm RSA -out "$ROOT_KEY"echo "生成根證書..."
openssl req -x509 -new -nodes -key "$ROOT_KEY" -sha256 -days "$DAYS" -out "$ROOT_CRT" -subj "/C=CN/ST=Beijing/L=Beijing/O=Example Root CA/OU=IT Department/CN=postgres"echo "生成服務器私鑰..."
openssl genpkey -algorithm RSA -out "$SERVER_KEY"echo "生成證書簽名請求 (CSR)..."
openssl req -new -key "$SERVER_KEY" -out "$SERVER_CSR" -config openssl.cnfecho "使用根證書簽署服務器證書..."
openssl x509 -req -in "$SERVER_CSR" -CA "$ROOT_CRT" -CAkey "$ROOT_KEY" -CAcreateserial -out "$SERVER_CRT" -days 365 -extfile openssl.cnfecho "驗證服務器證書..."
openssl verify -CAfile "$ROOT_CRT" "$SERVER_CRT"echo "生成完成!以下是生成的文件:"
ls -l "$ROOT_KEY" "$ROOT_CRT" "$SERVER_KEY" "$SERVER_CSR" "$SERVER_CRT"

如圖:
在這里插入圖片描述

四、創建配置證書目錄以及生成證書

1、執行cd /postgre/certs
2、執行sh generate_certs.sh 運行該腳本
3、如下圖代表生成成功
4、查看生成的證書

在這里插入圖片描述

在這里插入圖片描述

五、為證書目錄賦權限,以便postgre容器可以訪問執行這些證書

1、cd /postgre
2、chmod 777 certs
3、chmod 777 data
2、chown 999:999 certs/* 之所以所屬用戶/組設置為999 是因為postgre默認進程所屬就是999。
3、chmod 600 certs/* 為證書目錄設置為所屬用戶可讀可寫,如果權限過大會在連接數據庫時報錯!

六、創建配置文件postgresql.conf

1、進入 cd  /postgre
2、執行 touch postgresql.conf 命令
3、執行 vim postgresql.conf 命令
4、復制如下配置信息到文件中
ssl = on                                              #開啟SSL認證                                                                                                                                                                     
ssl_cert_file = '/var/lib/postgresql/certs/server.crt'         #服務器證書路徑                                                                                                                                                            
ssl_key_file = '/var/lib/postgresql/certs/server.key'         #密鑰路徑                                                                                                                                                             
ssl_ca_file = '/var/lib/postgresql/certs/root.crt'             #根證書路徑                                                                                                                                                            
listen_addresses = '*'                                   #監聽所有                                                                                                                                                                  
ssl_min_protocol_version = 'TLSv1.2'                     #SSL等級最小為1.2                                                                                                                                                                  
logging_collector = on                                   # 開啟日志                                                                                                                                                                  
log_directory = 'log'                                                                                                                                                                                                      
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'                                                                                                                                                                            
log_rotation_age = 1d  # 日志文件保留一天后輪換                                                                                                                                                                            
log_rotation_size = 10MB  # 當日志文件達到10MB時輪換                                                                                                                                                                       
log_min_messages = debug  # 記錄警告級別及以上的消息                                                                                                                                                                       
log_connections = on  # 記錄連接嘗試                                                                                                                                                                                       
log_disconnections = on  # 記錄斷開連接 

如下圖
在這里插入圖片描述

七、創建配置文件pg_hba.conf

1、cd /postgre
1、執行 touch pg_hba.conf 命令
2、執行 vim pg_hba.conf 命令
3、復制如下配置信息到文件中
hostssl  all  all  0.0.0.0/0  cert  clientcert=1     

如下圖
在這里插入圖片描述

八、安裝并啟動PostgreSQl

1、安裝postgreSQL 13.3版本 
鏡像會提供給運維。
2、啟動postgreSQL容器
docker run -d --name my-postgres-ssl -p 5432:5432  -e POSTGRES_PASSWORD=xxxx  -v /postgre/postgresql.conf:/etc/postgresql/postgresql.conf -v /postgre/certs:/var/lib/postgresql/certs -v /postgre/data:/var/lib/postgresql/data  b2fcd079c1d4 -c 'config_file=/etc/postgresql/postgresql.conf'其中 -e POSTGRES_PASSWORD=password 為數據庫設置密碼為 “password” 默認用戶名為 “postgres”其中 -v /postgre/postgresql.conf:/etc/postgresql/postgresql.conf  將宿主機的配置文件掛載到容器中。其中 -v /postgre/certs:/var/lib/postgresql/certs 為數據庫映射證書目錄 將宿主機中的證書目錄掛載到容器中 前面為宿主機目錄 后面為容器中目錄。可固定寫死。其中 -v /postgre/data:/var/lib/postgresql/data  為數據庫映射數據存儲目錄。
其中 -c 'config_file=/etc/postgresql/postgresql.conf' 強制數據庫使用自定義的配置文件,忽略系統內置的配置信息 后面會介紹如何編寫postgresql.conf文件。

九、替換容器中的pg_hba.conf配置文件

1、查詢 容器id  執行 
docker ps --filter "name=my-postgres-ssl" --format "{{.ID}}"
2、將配置文件復制容器中
docker cp /postgre/pg_hba.conf 容器ID:/var/lib/postgresql/data
3、重啟docker容器
docker restart 容器ID
4、查看運行日志
docker logs -f --tail 200 容器ID
5、如圖則運行成功

在這里插入圖片描述

十、使用客戶端連接數據庫 此處使用Navicat

其中SSL配置中 客戶端密鑰 上傳 server.key客戶端證書 上傳 server.crt根證書     上傳 root.crt
點擊【測試鏈接】

在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/908076.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/908076.shtml
英文地址,請注明出處:http://en.pswp.cn/news/908076.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

k8s更新證書

[rootk8s-master01 ~]# sudo kubeadm certs renew all [renew] Reading configuration from the cluster… [renew] FYI: You can look at this config file with ‘kubectl -n kube-system get cm kubeadm-config -o yaml’ certificate embedded in the kubeconfig file for…

正點原子lwIP協議的學習筆記

正點原子lwIP協議的學習筆記 正點原子lwIP學習筆記——lwIP入門 正點原子lwIP學習筆記——MAC簡介 正點原子lwIP學習筆記——PHY芯片簡介 正點原子lwIP學習筆記——以太網DMA描述符 正點原子lwIP學習筆記——裸機移植lwIP 正點原子lwIP學習筆記——裸機lwIP啟動流程 正點…

MongoTemplate常用api學習

本文只介紹常用的api,盡量以最簡單的形式學會mongoTemplate基礎api的使用 一、新增 主要包含三個api:insert(一個或遍歷插多個)、insertAll(批量多個)、save(插入或更新) //這里簡…

006網上訂餐系統技術解析:打造高效便捷的餐飲服務平臺

網上訂餐系統技術解析:打造高效便捷的餐飲服務平臺 在數字化生活方式普及的當下,網上訂餐系統成為連接餐飲商家與消費者的重要橋梁。該系統以菜品分類、訂單管理等模塊為核心,通過前臺展示與后臺錄入的分工協作,為管理員和會員提…

網絡攻防技術五:網絡掃描技術

文章目錄 一、網絡掃描的基礎概念二、主機發現三、端口掃描1、端口號2、端口掃描技術3、端口掃描隱秘策略 四、操作系統識別五、漏洞掃描六、簡答題1. 主機掃描的目的是什么?請簡述主機掃描方法。2. 端口掃描的目的是什么?請簡述端口掃描方法及掃描策略。…

生成JavaDoc文檔

生成 JavaDoc 文檔 1、快速生成 文檔 注解 2、常見的文檔注解 3、腳本生成 doc 文檔 4、IDEA工具欄生成 doc 文檔 第一章 快速入門 第01節 使用插件 在插件工具當中,找到插件 javaDoc 使用方式,在代碼區域,直接點擊右鍵。選擇 第02節 常用注…

大數據-276 Spark MLib - 基礎介紹 機器學習算法 Bagging和Boosting區別 GBDT梯度提升樹

點一下關注吧!!!非常感謝!!持續更新!!! 大模型篇章已經開始! 目前已經更新到了第 22 篇:大語言模型 22 - MCP 自動操作 FigmaCursor 自動設計原型 Java篇開…

【HarmonyOS 5】如何優化 Harmony-Cordova 應用的性能?

以下是針對 ?Harmony-Cordova 應用性能優化?的完整方案,結合鴻蒙原生特性和Cordova框架優化策略: ??一、渲染性能優化? ?減少布局嵌套層級? 使用扁平化布局(如 Grid、GridRow)替代多層 Column/Row 嵌套,避免冗…

數據庫管理-第332期 大數據已死,那什么當立?(20250602)

數據庫管理332期 2025-06-02 數據庫管理-第332期 大數據已死,那什么當立?(20250602)1 概念還是技術2 必然的大數據量3 離線到實時4 未來總結 數據庫管理-第332期 大數據已死,那什么當立?(202506…

相機--RGBD相機

教程 分類原理和標定 原理 視頻總結 雙目相機和RGBD相機原理 作用 RGBD相機RGB相機深度; RGB-D相機同時獲取兩種核心數據:RGB彩色圖像和深度圖像(Depth Image)。 1. RGB彩色圖像 數據格式: 標準三通道矩陣&#…

神經符號集成-三篇綜述

講解三篇神經符號集成的綜述,這些綜述沒有針對推薦系統的,所以大致過一下,下一篇帖子會介紹針對KG的兩篇綜述。綜述1關注的是系統集成和數據流的宏觀模式“是什么”;綜述3關注的是與人類理解直接相關的中間過程和決策邏輯的透明度…

window/linux ollama部署模型

模型部署 模型下載表: deepseek-r1 win安裝ollama 注意去官網下載ollama,這個win和linux差別不大,win下載exe linux安裝ollama 采用docker方式進行安裝: OLLAMA_HOST=0.0.0.0:11434 \ docker run -d \--gpus all \-p 11434:11434 \--name ollama \-v ollama:/root/.ol…

計算A圖片所有顏色占B圖片紅色區域的百分比

import cv2 import numpy as npdef calculate_overlap_percentage(a_image_path, b_image_path):# 讀取A組和B組圖像a_image cv2.imread(a_image_path)b_image cv2.imread(b_image_path)# 將圖像從BGR轉為HSV色彩空間,便于顏色篩選a_hsv cv2.cvtColor(a_image, c…

每日算法 -【Swift 算法】盛最多水的容器

盛最多水的容器:Swift 解法與思路分析 📌 問題描述 給定一個長度為 n 的整數數組 height,每個元素表示在橫坐標 i 處的一條垂直線段的高度。任意兩條線段和 x 軸構成一個容器,該容器可以裝水,水量的大小由較短的那條…

云原生安全基礎:Linux 文件權限管理詳解

🔥「炎碼工坊」技術彈藥已裝填! 點擊關注 → 解鎖工業級干貨【工具實測|項目避坑|源碼燃燒指南】 在云原生環境中,Linux 文件權限管理是保障系統安全的核心技能之一。無論是容器化應用、微服務架構還是基礎設施即代碼(IaC&#xf…

TypeScript 中的字面量類型(Literal Types)

在 TypeScript 中,字面量類型(Literal Types)是一種特殊的類型,它允許你將變量的類型限制為某個具體的值(如特定的字符串、數字或布爾值),而不僅僅是寬泛的類型(如 string、number&a…

晶臺光耦在手機PD快充上的應用

光耦(光電隔離器)作為關鍵電子元件,在手機PD快充中扮演信號隔離與傳輸的“安全衛士”。其通過光信號實現電氣隔離,保護手機電路免受高電壓損害,同時支持實時信號反饋,優化充電效率。 晶臺品牌推出KL817、KL…

python學習打卡day43

DAY 43 復習日 作業: kaggle找到一個圖像數據集,用cnn網絡進行訓練并且用grad-cam做可視化 浙大疏錦行 數據集使用貓狗數據集,訓練集中包含貓圖像4000張、狗圖像4005張。測試集包含貓圖像1012張,狗圖像1013張。以下是數據集的下…

大數據與數據分析【數據分析全棧攻略:爬蟲+處理+可視化+報告】

- 第 100 篇 - Date: 2025 - 05 - 25 Author: 鄭龍浩/仟墨 大數據與數據分析 文章目錄 大數據與數據分析一 大數據是什么?1 定義2 大數據的來源3 大數據4個方面的典型特征(4V)4 大數據的應用領域5 數據分析工具6 數據是五種生產要素之一 二 …

uniapp 開發企業微信小程序,如何區別生產環境和測試環境?來處理不同的服務請求

在 uniapp 開發企業微信小程序時,區分生產環境和測試環境是常見需求。以下是幾種可靠的方法,幫助你根據環境處理不同的服務請求: 一、通過條件編譯區分(推薦) 使用 uniapp 的 條件編譯 語法,在代碼中標記…