记一次pgsql 客户端开启TLS后配置RootCA

记一次pgsql 客户端开启TLS后配置RootCA,第1张

记一次pgsql 客户端开启TLS后配置RootCA

最近项目要放到欧洲环境做演示用,客户要求部署在amazon云上,使用的redis,mq,pgsql都要用云上的组件,而且都要去开启tls连接。项目用的go开发的server,redis和rabbitmq使用的tls配置都是go默认提供的tls.Config对象,设置RootCAs属性就ok了,证书用的是Amazon Trust Services Repository 下面的rootCA

    certBytes, err := ioutil.ReadFile("AmazonRootCA1.pem")
	if err != nil {
		panic(err)
	}
	clientCertPool := x509.NewCertPool()
	ok := clientCertPool.AppendCertsFromPEM(certBytes)
	if !ok {
		panic("failed to parse root certificate")
	}
	conf := &tls.Config{
		RootCAs:            clientCertPool,
		InsecureSkipVerify: false,
	}

可是配置pgsql时并没有发现有修改tls.Config对象的地方,无奈去amazon官网查找,教程为:

Security with Amazon Aurora PostgreSQL - Amazon Aurora

里面有示例,就是DNS中设置sslrootcert

psql -h testpg.cdhmuqifdpib.us-east-1.rds.amazonaws.com -p 5432 
    "dbname=testpg user=testuser sslrootcert=rds-ca-2015-root.pem sslmode=verify-full"

还有不要忘记设置sslmode,下面是ssmode的解释:

				disable: 只尝试非SSL连接。

			    allow:首先尝试非SSL连接,若失败再尝试SSL连接。

			    prefer (default):首先尝试SSL连接,若失败再尝试非SSL连接。

			    require:只尝试SSL连接,若有根证书存在,等同于verify-ca。

			    verify-ca:只尝试SSL连接,并用根证书验证服务器证书是不是根CA签发的。

			    verify-full:只尝试SSL连接,并用根证书验证服务器证书是不是根CA签发的,且主题必须匹配连接域名或IP地址。

因此只要修改DNS就可以了 ,amazon的pgsql相关证书在下面的页面中找到

Using SSL/TLS to encrypt a connection to a DB cluster - Amazon Aurora

下载地址为:https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem

你把下载好的证书文件的本地地址设置给DNS中的sslrootcert就可以了

pgsql官方client ssl说明:PostgreSQL: documentation: 14: 34.19. SSL Support

pgsql官方DNS连接参数说明:PostgreSQL: documentation: 14: 34.1. Database Connection Control Functions

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5686482.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存