• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    设置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 gt; /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
    

    您可能感兴趣的文章:
    • PostgreSQL新手入门教程
    • Windows下Postgresql数据库的下载与配置方法
    • Debian中PostgreSQL数据库安装配置实例
    上一篇:Instagram提升PostgreSQL性能的五个技巧
    下一篇:在PostgreSQL中实现递归查询的教程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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