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

 更新时间:2015年04月21日 11:06:45   投稿:goldensun  
这篇文章主要介绍了设置CA证书来强化PostgreSQL的安全性的教程,主要用到了CA私钥,需要的朋友可以参考下

在经历了多次的摸索实验后我终于成功地实现了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

相关文章

  • DBeaver一款替代Navicat的数据库可视化工具

    DBeaver一款替代Navicat的数据库可视化工具

    这篇文章主要介绍了DBeaver一款替代Navicat的数据库可视化工具,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 如何使用navicat远程连接openGauss

    如何使用navicat远程连接openGauss

    公司要在openEuler系统中安装openGauss数据库,经过几天的查资料,终于是安装成功了,并且能在navicat中远程连接使用,本文给大家介绍如何使用navicat远程连接openGauss,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • 大数据量时提高分页的效率

    大数据量时提高分页的效率

    当我们在处理大量数据的时候,就需要注意分页的效率问题了,下面大家可以看看
    2009-03-03
  • Navicat运行sql文件导入数据不全或导入失败的解决方案

    Navicat运行sql文件导入数据不全或导入失败的解决方案

    最近导出数据库到另一个服务器,遇到这个问题,下面这篇文章主要给大家介绍了关于Navicat运行sql文件导入数据不全或导入失败的解决方案,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • 关于SQL注入中文件读写的方法总结

    关于SQL注入中文件读写的方法总结

    这篇文章主要给大家介绍了关于SQL注入中文件的读写方法,文中通过示例代码介绍的非常详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • 深入SQL中PIVOT 行列转换详解

    深入SQL中PIVOT 行列转换详解

    T-SQL语句中,Pivot运算符用于在列和行之间对数据进行旋转或透视转换,PIVOT命令可以实现数据表的列转行,同时执行聚合运算,UNPIVOT则与其相反,实现数据的行转列。
    2015-10-10
  • 谈谈数据库的字段设计的几个心得

    谈谈数据库的字段设计的几个心得

    今天小编就为大家分享一篇关于谈谈数据库的字段设计的几个心得,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • SQL中where子句与having子句的区别小结

    SQL中where子句与having子句的区别小结

    这篇文章主要给大家介绍了关于SQL中where子句与having子句的区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • 关于数据库性能优化中的表结构优化

    关于数据库性能优化中的表结构优化

    这篇文章主要介绍了关于数据库性能优化中的表结构优化,合理的表结构设计可以提高数据库的查询效率和性能,而不合理的表结构设计则可能导致查询效率低下、数据冗余、数据不一致等问题,需要的朋友可以参考下
    2023-07-07
  • JDBC常用接口总结

    JDBC常用接口总结

    这篇文章主要介绍了JDBC常用接口总结,以及部分使用代码语句,需要的朋友可以参考下。
    2017-09-09

最新评论