建立安全SSL连接PostgreSQL数据库服务器
建立安全SSL连接PostgreSQL数据库服务器
当前物联网的挑战之一就是提供最高的安全级别。这就是为什么需要开启SSL连接到 PostgreSQL。
当你想要安全的存储数据到PostgreSQL数据中时,第一件事就是通过加密的连接保护身份认证凭证和存储数据被拦截。
下面,我们将对数据库服务器进行适当的调整,来开启SSL和生成证书。然后,在客户端机器上创建和添加证书,最后,通过pgAdmin 工具来建立到服务器是安全连接。让我们开始吧。
SSL双向认证和SSL单向认证的区别
双向认证 SSL 协议要求服务器和用户双方都有证书。单向认证 SSL 协议不需要客户拥有CA证书,服务器端不会验证客户证书,以及在协商对称密码方案,对称通话密钥时,服务器发送给客户的是没有加过密的(这并不影响 SSL 过程的安全性)密码方案。这样,双方具体的通讯内容,都是加过密的数据,如果有第三方攻击,获得的只是加密的数据,第三方要获得有用的信息,就需要对加密的数据进行解密,这时候的安全就依赖于密码方案的安全。而幸运的是,目前所用的密码方案,只要通讯密钥长度足够的长,就足够的安全。这也是我们强调要求使用128位加密通讯的原因。
一般Web应用都是采用SSL单向认证的,原因很简单,用户数目广泛,且无需在通讯层对用户身份进行验证,一般都在应用逻辑层来保证用户的合法登入。但如果是企业应用对接,情况就不一样,可能会要求对客户端(相对而言)做身份验证。这时就需要做SSL双向认证。
由于单向认证和双向认证的区别仅在于创建连接阶段,数据的传输均为加密的,因此客户端与PG服务端的连接采取SSL单向认证即可,即仅在PG Server端配置SSL证书。
PostgreSQL服务器配置
1. 首先连接到PG数据库服务器

2.为了让SSL工作起来,需要添加下面三个文件到 $PGDATA服务器目录:
server.key – 私钥。
server.crt – 服务器证书。
root.crt – 受信任的根证书。
提示:
这里我们不会详细解释命令的参数,但如果你需要更深入的了解,可以只参考本文中的 Self-Signed Custom SSL或在官方站点OpenSSL查询更详细的说明;
你也可以使用 你也可以同样使用自定义SSL(custom SSL )证书 ,描述如下 (按照 生成自定义的SSL证书 部分的指导实现)。 在后者情况下,你可以直接跳过生成指令,直接跳转到第六步的指令
3.首先,让我们创建第一个文件—-私钥:
openssl genrsa -des3 -out server.key 1024
在生成server.key文件的过程中,它会要求输入密码— 随意输入并确认。
现在,为了在以后使用这个key,你需要删除在上面添加的密码。通过如下命令实现:
openssl rsa -in server.key -out server.key
再次输入密码来确认。
为私钥文件设置适当的权限和所有权,使用如下命令:
chmod 400 server.key
chown ec2-user:ec2-user server.key
4. 接下来,您需要创建基于server.key文件的服务器证书, 如下:
openssl req -new -key server.key -days 3650 -out server.crt -x509
也可以通过-subj命令指定
openssl req -new -key server.key -days 3650 -out server.crt -x509 -subj ‘/C=US/ST=California/L=PaloAlto/O=Jelastic/CN=mysite.com/ema ilAddress=mail@jelastic.com’
参数来设置你的个人资料:
5.为了得到自己签名的证书,把生成的服务器证书作为受信任的根证书,只需要复制并取一个合适的名字
cp server.crt root.crt
现在,三个证书文件都有了,接下来就可以处理激活SSL以及使用它的PostgreSQL 数据库配置了
6.配置postgres.conf和pg_hba.conf文件
修改ssl mode 为on,设置ssl_ca_file为root.crt
修改pg_hba.conf文件,新增ssl认证连接的规则




7.重启数据库,规则生效

建立安全SSL连接PostgreSQL数据库服务器的更多相关文章
- typescript-koa-postgresql 实现一个简单的rest风格服务器 —— 连接 postgresql 数据库
接上一篇,这里使用 sequelize 来连接 postgresql 数据库 1.安装 sequelize,数据库驱动 pg yarn add sequelize sequelize-typescri ...
- msf连接PostgreSQL数据库
一.启动PostgreSQL服务######################################################################?root@root:~# ...
- ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
前段时间在园子里看到了小蝶惊鸿 发布的有关绿色版的Linux.NET——“Jws.Mono”.由于我对.Net程序跑在Linux上非常感兴趣,自己也看了一些有关mono的资料,但是一直没有时间抽出时间 ...
- 视频教程--ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库
说好的给园子里的朋友们录制与<ASP.NET MVC 使用 Petapoco 微型ORM框架+NpgSql驱动连接 PostgreSQL数据库> 这篇博客相对应的视频,由于一个月一来没有时 ...
- Entity Freamwork 6连接PostgreSql数据库
原文 Entity Freamwork 6连接PostgreSql数据库 开发环境 VS 2015 Update 1 Postgre Sql 9.4 使用过程 1.使用Nuget在项目中添加对E ...
- Abp.NHibernate连接PostgreSQl数据库
Abp.NHibernate动态库连接PostgreSQl数据库 初次接触Abp框架,其框架中封装的操作各类数据的方法还是很好用的,本人还在进一步的学习当中,并将利用abp.NHibernate类库操 ...
- SQLServer 2005客户端远程连接sql2008 数据库服务器
SQL2005客户端远程连接sql2008 数据库服务器 by:授客 QQ:1033553122 准备工作: 客户端所在pc机配置: 配置数据源 控制面板-管理工具-ODBC数据源-系统DSN-添加- ...
- powerdesigner连接postgresql数据库生成pdm及word文档
1.准备软件: powerdesigner165与postgresql的驱动:psqlodbc_11_01_0000 2.安装并破解完成powerdesigner165 参看链接:https://ww ...
- python连接postgresql数据库
python可以通过第三方模块连接postgresql. 比较有名的有psycopg2 和python3-postgresql (一)psycopg2 ubuntu下安装 sudo apt-get ...
随机推荐
- 技术实践:教你用Python搭建gRPC服务
摘要:gRPC是一个高性能.通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf序列化协议开发,且支持众多开发语言. 本文分享自华为云社区& ...
- 测试开发:推荐一款阿里最新 Python 自动化开源工具!
大家好,我是麦小米,是狂师老师全栈测开训练营中的一名学员. 如果之前做过iOS自动化的同学相信都知道,一直以来,iOS自动化的实现&执行都必须依赖 Mac 系统,其主要原因是因为需要通过 xc ...
- This application failed to start because no Qt platform plugin could be initialized
今天在直接运行QT生成的.exe遇到了一个错误:This application failed to start because no Qt platform plugin could be init ...
- 27、异常处理(except)
27.1.什么是异常: 1.异常介绍: 异常就是程序运行时发生错误的信号,在程序出错的时候,则会产生一个异常,若程序没有处理它,则会抛出该异常, 程序的运行也会随之终止,在python中,错误触发的异 ...
- 1.5Java、万维网以及其他
要点提示:Java是一种功能强大和多用途的编程语言,可用于开发运行在移动设备.台式计算机以及服务器端的软件.
- python编程训练
1. 反转字符串: 1 #encoding=utf-8 2 #import string 3 from collections import deque 4 5 def reverse1(string ...
- leetcode第157场周赛5213
当时居然没想到,我真菜,就当记录一下了. 思路分析: 分为两种: 第一种:走两步的,无论是奇或偶的位置,只要走两步,代价为0: 第二种:走一步的,就是偶数到奇数,或者奇数到偶数,代价为1: 那么实际上 ...
- 20道Java实习生笔试面试选择题(内附答案解析)
1.以下对继承的描述错误的是(A) A.Java中的继承允许一个子类继承多个父类 B.父类更具有通用性,子类更具体 C.Java中的继承存在的传递性 D.当实例化子类时会递归调用父类中的构造方法 解 ...
- 每日单词 —— cut to the chase
cut to the chase: 词面意思--切奶酪 是美国俚语--开门见山:直奔主题 看一看相关的例句或者电影读白吧! 1. - 嫌疑人:Shall we cut to the chase ? 侦 ...
- C语言字符串处理库函数大全(转)
一.string.h中字符串处理函数 在头文件<string.h>中定义了两组字符串函数.第一组函数的名字以str开头:第二组函数的名字以mem开头. 只有函数memmove对重叠对象间的 ...