设置CA证书来强化PostgreSQL的安全性的教程

在经历了多次的摸索实验后我终于成功地实现了SSL证书认证的功能,因此我想这次我要把这些步骤记录下来供日后查阅。

出于安全和方便的原因,我要在一台单独的专用机器上签署客户的证书,这台机器也称为 证书授证中心(CA)。

这让我们在授权新的客户端时不必先登录到PostgreSQL服务器然后再签署证书或者修改pg_hba.conf。

我们要创建一个特殊的数据库组,叫sslcertusers。这个组里的所有用户都可以通过由CA签署的证书进行连接。

在下面的例子中,请将"trustly"替换成你的公司名或组织名。所有的命令都是基于Ubuntu Linux 12.04 LTS。
 
设置CA
CA应该是一台离线的处于高度安全环境中的计算机。

生成CA私钥

sudo openssl genrsa -des3 -out /etc/ssl/private/trustly-ca.key 2048
sudo chown root:ssl-cert /etc/ssl/private/trustly-ca.key
sudo chmod 640 /etc/ssl/private/trustly-ca.key

生成CA证书

sudo openssl req -new -x509 -days 3650 \
-subj '/C=SE/ST=Stockholm/L=Stockholm/O=Trustly/CN=trustly' \
-key /etc/ssl/private/trustly-ca.key \
-out /usr/local/share/ca-certificates/trustly-ca.crt
sudo update-ca-certificates

配置PostgreSQL服务器
生成PostgreSQL服务器私钥

# Remove default snakeoil certs
sudo rm /var/lib/postgresql/9.1/main/server.key
sudo rm /var/lib/postgresql/9.1/main/server.crt
# Enter a passphrase
sudo -u postgres openssl genrsa -des3 -out /var/lib/postgresql/9.1/main/server.key 2048
# Remove the passphrase
sudo -u postgres openssl rsa -in /var/lib/postgresql/9.1/main/server.key -out /var/lib/postgresql/9.1/main/server.key
sudo -u postgres chmod 400 /var/lib/postgresql/9.1/main/server.key

生成PostgreSQL服务器证书签署请求(CSR)

sudo -u postgres openssl req -new -nodes -key /var/lib/postgresql/9.1/main/server.key -days 3650 -out /tmp/server.csr -subj '/C=SE/ST=Stockholm/L=Stockholm/O=Trustly/CN=postgres'

用CA私钥签署PostgreSQL服务器证书请求

sudo openssl req -x509 \
-key /etc/ssl/private/trustly-ca.key \
-in /tmp/server.csr \
-out /var/lib/postgresql/9.1/main/server.crt
sudo chown postgres:postgres /var/lib/postgresql/9.1/main/server.crt

创建根(root)证书=PostgreSQL服务器证书+CA证书

sudo -u postgres sh -c 'cat /var/lib/postgresql/9.1/main/server.crt /etc/ssl/certs/trustly-ca.pem > /var/lib/postgresql/9.1/main/root.crt'
sudo cp /var/lib/postgresql/9.1/main/root.crt /usr/local/share/ca-certificates/trustly-postgresql.crt
sudo update-ca-certificates

授权访问

CREATE GROUP sslcertusers;
ALTER GROUP sslcertusers ADD USER joel;

# /etc/postgresql/9.1/main/pg_hba.conf:
hostssl nameofdatabase +sslcertusers 192.168.1.0/24 cert clientcert=1

重启PostgreSQL

sudo service postgresql restart

PostgreSQL客户端设置
从PostgreSQL服务器上复制根证书

mkdir ~/.postgresql
cp /etc/ssl/certs/trustly-postgresql.pem ~/.postgresql/root.crt

生成PostgreSQL客户端私钥

openssl genrsa -des3 -out ~/.postgresql/postgresql.key 1024

# If this is a server, remove the passphrase:
openssl rsa -in ~/.postgresql/postgresql.key -out ~/.postgresql/postgresql.key

生成PostgreSQL客户端证书签署请求并签署

# Replace "joel" with username:
openssl req -new -key ~/.postgresql/postgresql.key -out ~/.postgresql/postgresql.csr -subj '/C=SE/ST=Stockholm/L=Stockholm/O=Trustly/CN=joel'
sudo openssl x509 -req -in ~/.postgresql/postgresql.csr -CA /etc/ssl/certs/trustly-ca.pem -CAkey /etc/ssl/private/trustly-ca.key -out ~/.postgresql/postgresql.crt -CAcreateserial
sudo chown joel:joel -R ~/.postgresql
sudo chmod 400 -R ~/.postgresql/postgresql.key
(0)

相关推荐

  • PostgreSQL新手入门教程

    自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选. 本文介绍PostgreSQL的安装和基本用法,供初次使用者上手.以下内容基于Debian操作系统,其他操作系统实在没有精力兼顾,但是大部分内容应该普遍适用. 安装 1.首先,安装PostgreSQL客户端. sudo apt-get install postgresql-client 然后,安装PostgreSQL服务器. sudo apt-get install postgresql 2.正常情况下,安

  • Debian中PostgreSQL数据库安装配置实例

    用惯了MySQL后,想尝试使用下PostgreSQL,据说这玩意儿也很强大,我在网上搜索了下相关中文书籍,可惜相关书籍远远没有MySQL那么多,不过我在官方找到了由志愿者翻译的文档(参考9.1文档翻译项目),说实话我英文文档阅读能力还是比较纠结的,所以有中文文档当然优先中文了. 在Debian下可以通过apt-get命令直接安装: 复制代码 代码如下: sudo apt-get install postgresql postgresql-client postgresql-server-dev-

  • Windows下Postgresql数据库的下载与配置方法

    注意下载的是二进制版,不是带Windows Installer的. http://www.enterprisedb.com/products-services-training/pgbindownload x86下载http://get.enterprisedb.com/postgresql/postgresql-9.2.4-1-windows-binaries.zip x64下载http://get.enterprisedb.com/postgresql/postgresql-9.2.4-1-

  • 设置CA证书来强化PostgreSQL的安全性的教程

    在经历了多次的摸索实验后我终于成功地实现了SSL证书认证的功能,因此我想这次我要把这些步骤记录下来供日后查阅. 出于安全和方便的原因,我要在一台单独的专用机器上签署客户的证书,这台机器也称为 证书授证中心(CA). 这让我们在授权新的客户端时不必先登录到PostgreSQL服务器然后再签署证书或者修改pg_hba.conf. 我们要创建一个特殊的数据库组,叫sslcertusers.这个组里的所有用户都可以通过由CA签署的证书进行连接. 在下面的例子中,请将"trustly"替换成你的

  • Linux之Centos8创建CA证书教程

    安装所需文件 Yum install openssl-* -y 创建数据库索引文件 输入证书序列号为01 生成私钥文件 通过私钥来创建CA证书 openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem 给用户颁发证书(以/data/skills目录为例) 申请私钥 用申请的私钥文件来申请证书 openssl -req -new -key /data/skills

  • postgreSQL数据库基本概念教程

    目录 postgreSQL设置只允许本地机器连接 PostgreSQL执行SQL语句 创建数据库并连接 数据库基础知识 DB.DBMS DBMS种类 RDBMS SQL SQL书写规则 postgreSQL设置只允许本地机器连接 在D:\program files\PostgreSQL\14\data里面设置postgresql.conf: listen_addresses = ‘localhost’ 然后在服务窗口重新启动postgresql. PostgreSQL执行SQL语句 Postgr

  • Java 使用keytool创建CA证书的操作

    keytool是一个密钥和证书管理工具 1.keytool工具位置 keytool工具在 JDK 的安装目录的 bin 目录下面 2.keytool工具命令展示 打开命令行进入 bin 目录,然后输入命令 keytool.exe,就能看见keytool工具支持哪些命令,如下图所示: 注意下面的用法提示:使用 "keytool -command_name -help" 获取 command_name 的用法 3.查看具体命令用法 这里我们使用 -genkeypair 命令来创建密钥库,先

  • CentOS 7下安装PostgreSQL 9.6的教程分享

    前言 PostgreSQL是一个强大开源的对象关系类型数据库系统,它能运行于几乎所有主要的操作系统,包括Linux.Unix(AIX.BSD.HP-UX.SGI IRIX.Mac OS.Solaris.Tru64).Windows OS.对于新的项目我是非常建议使用PostgreSQL.这里就简单的整理下CentOS下的安装过程. CentOS的源中自带有PostgreSQL,可以通过 yum list | grep postgresql 查看系统自带的版本,我这边看到的是9.2版本,个人还是比

  • Postgresql的日志配置教程详解

    背景 公司的项目中使用了postgresql(简称pg)作为其数据库管理系统,前两天环境突然崩溃了,页面无法打开.经过排查,我发现是数据库所在机器磁盘满了,通过目录和文件排序,原来是pg的日志太多(大约保留了大半年的日志在磁盘上没有被清理). 我看了下pg的日志配置,发现基本都是用的默认配置,日志滚动没有开启,于是乎做了下相关配置优化后对pg进行重启,最后看了pg的日志滚动,恢复正常了.以下是我梳理的关于pg的日志配置项. 配置详解 配置文件:postgresql.conf 配置1:日志开启与关

  • 手把手教你设置IntelliJ IDEA 的彩色代码主题的图文教程

    温馨提示:本教程的 GitHub 地址为「intellij-idea-tutorial」,欢迎感兴趣的童鞋Star.Fork,纠错. 首先,给出一系列 IntelliJ IDEA 代码的彩色主题,供大家选择: VibrantUnknown(Darcula) FadeComments NicePython Solarized Havenjark GeditForElegantGnome Gvim 在选完我们中意的主题之后,需要大家到「intellij-idea-tutorial」中下载相应的主题.

  • 阿里云申请的 CA Wosin 证书,在Windows iis下导入证书的步骤分享

    阿里云申请后, 你可以下载一个压缩文件, 里面有两个文件 key & pem 文件. 这两个文件需要 OpenSSL 命令转为 PFX 文件, 导入到IIS中. 这个是阿里云16年才上的一个功能, 不完善, 连文档都没有问了好久, 给了一个这样的文档 https://help.aliyun.com/knowledge_detail/13086385.html 里面有这句话 3. 将PEM/KEY/CRT转换为PFX 使用OpenSSL工具,可以将密钥文件KEY和公钥文件CRT转化为PFX文件.

  • Tomcat9使用免费的Https证书加密网站的方法

    1.概述 Apache Tomcat是一款优秀的Java Web容器,对于各个站长来说,可以很方便的使用Tomcat将自己的网站博客放在公网的服务器上,分享自己的心得以及个人博客. 那么在公网中的访问,没有被第三方公认可信的机构加密时,会默认使用Http协议,以明文将自己的网站在公网上传输.这对于大部分领域都没关系,但是对于某些敏感的数据,甚至机密需要保护的数据,例如:银行卡号.银行密码.手机验证码之类的信息,一旦被别有用心的人在中途使用抓包工具拦截,那么将会导致不可设想的后果. 那么网站需要使

  • 详解docker API管理接口增加CA安全认证

    目录 一.模拟创建CA证书(中间边框的部分) 二.签发服务器端证书(右边蓝色背景部分) 三.签发客户端证书(左边黄色背景的部分) 四.签发证书收尾工作 五.配置docker服务端 六.IDEA配置使用客户端证书 前文中我们曾经介绍过<使用IDEA远程工具>连接Docker REST API,我们会发现一个问题,任何知道Docker 服务器IP.端口的第三方都可以访问这个API,非常的不安全.为了保证Docker API的安全性,我们有必要使用数字证书进行安全验证. 为docker服务端配置服务

随机推荐