zoukankan      html  css  js  c++  java
  • PG-SSL安全配置

    配置SSL安全连接

    服务端配置

    服务器端需生成三个文件: root.crt(根证书)server.crt(服务器证书)server.key(服务器私钥)

    生成服务器私钥文件
    ## 此处需输入密码,并需要再次确认输入密码
    openssl genrsa -des3 -out server.pem 2048
    
    
    需移除服务器私钥文件中密码

    需移除密码,否则数据库重启时会出现异常

    openssl rsa -in server.pem -out server.key
    
    生成服务器证书
    # 此处可以一路enter,不用输入
    openssl req -new -key server.key -days 3650 -out server.crt -x509
    
    
    openssl req -new -key server.key -days 3650 -out server.crt -x509 -subj '/C=CA/ST=British Columbia/L=Comox/O=TheBrain.ca/CN=thebrain.ca/emailAddress=info@thebrain.ca'
    

    说明:

    Unit 说明 示例
    /C= Country CN
    /ST= State guangzhou
    /L= Location gz
    /O Organization Global Security
    /OU=(optional) Organizational Unit IT Department
    /CN= Common Name example
    /emailAddress= Email email@example.com
    生成根证书

    由于没有公证机构提供,只能使用自签名证书,因此可以将服务器证书作为根证书

    cp server.crt root.crt
    
    检查确认server.key文件权限
    ls -l server.key
    
    chown postgres:postgres server.key
    chmod 600 server.key
    

    错误信息:

    private key file "server.key" has group or world access
    File must have permissions u=rw (0600) or less if owned by the database user, or permissions u=rw,g=r (0640) or less if owned by root.
    
    开启postgresql.conf文件参数配置属性
    ssl = on
    ssl_ca_file = 'root.crt'
    ssl_cert_file = 'server.crt'
    ssl_key_file = 'server.key'
    
    pg_hba.conf文件禁止用户以非SSL连接数据库
    hostssl all         postgres    0.0.0.0/0             md5 clientcert=1
    
    重启postgres服务
    pg_ctl stop
    pg_ctl start
    
    使用SSL连接验证登录
    psql "sslmode=require host=localhost dbname=postgres"
    
    客户端配置

    客户端需要三个文件: root.crt(根证书)postgresql.crt(客户端证书)postgresql.key(客户端私钥)

    生成客户端私钥
    ## 此处需输入密码,并需要再次确认输入密码
    openssl genrsa -des3 -out postgresql.pem 2048
    
    移除密码
    openssl rsa -in postgresql.pem -out postgresql.key
    
    生成客户端csr文件
    # Common Name (e.g. server FQDN or YOUR name) []:postgres该项必须设置为要连接postgresql数据库的用户名,否则会默认使用当前计算机的用户名,导致证书使用时,认证失败。
    openssl req -new -key postgresql.key -out postgresql.csr
    
    or
    openssl req -new -key /tmp/postgresql.key -out /tmp/postgresql.csr -subj '/C=CA/ST=British Columbia/L=Comox/O=TheBrain.ca/CN=www-data'
    
    生成客户端证书
    openssl x509 -req -days 3650 -in postgresql.csr -CA root.crt -CAkey server.key -out postgresql.crt -CAcreateserial
    
    客户端SSL连接

    image-20201126161143187

  • 相关阅读:
    弄懂JDK、JRE和JVM到底是什么
    精选Java面试题(二)
    精选Java面试题
    HttpPost请求将json作为请求体传入的简单处理方法
    Python在for循环中更改list值的方法
    vue 图片加载失败时,加载默认图片
    移动端,进入页面前空白,添加加载状态
    img 失效时 显示默认图片
    vue 全局组件的引用
    页面到达底部,加载更多
  • 原文地址:https://www.cnblogs.com/binliubiao/p/14044573.html
Copyright © 2011-2022 走看看