最近项目要放到欧洲环境做演示用,客户要求部署在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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)