openGauss/MogDB与PostgreSQL对比测试SSL之自签名私有证书测试
原作者:彭冲
SSL传输加密简介
SSL认证通过使用SSL证书确保客户端检查服务端证书或者服务器检查客户端证书,SSL认证除了加密数据,也可以识别目标端的真伪,防止网络中间人的伪装攻击。
单向认证与双向认证
单向认证
单向认证一般是指客户端只验证服务器证书的有效性,而服务端不验证客户端证书的有效性。服务器加载服务端证书信息并发送给客户端,客户端使用根证书来验证服务器端证书的有效性。
双向认证
双向认证是指客户端验证服务器证书的有效性,同时服务器端也要验证客户端证书的有效性,只有两端都认证成功,连接才能建立。
客户端验证服务器证书有如下两种模式:
- 客户端连接参数SSLMODE设置为verify-ca仅校验数据库证书真伪
- 客户端连接参数SSLMODE设置为verify-full校验数据库证书真伪及
通用名CN匹配数据库连接的hostname
服务端验证客户端证书有如下三种模式:
- 数据库认证文件pg_hba.conf配置认证选项clientcert=verify-ca仅验证客户端证书真伪,认证方法可选。
- 数据库认证文件pg_hba.conf配置认证选项clientcert=verify-full验证客户端证书真伪及CN匹配数据库连接用户名或映射匹配,认证方法可选。
- 数据库认证文件pg_hba.conf配置认证方法cert,免密验证客户端证书真伪及CN匹配数据库连接用户名或映射匹配。
cert认证实际是基于clientcert=verify-full认证选项的trust方法认证。
SSL编译支持
PostgreSQL编译需打开如下选项,同时需要安装openssl
--with-openssl
--with-includes=/usr/include/openssl