• 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

  • 相关阅读:
    正则表达式
    面向对象(访问控制、继承、重写)
    你凌晨1点半会想什么
    10、android学习资源整理
    9、android开发之java.lang.verifyError(转载)
    8、android代码优化技术记录
    6、android 普通日志输出到SD卡
    刷机总结(阿里云os-->android4.2.2)注明:本文不是教程
    忘记树莓派密码怎么办?
    7、android的button如何平铺一张图片?
  • 原文地址:https://www.cnblogs.com/binliubiao/p/14044573.html
Copyright © 2020-2023  润新知