Python 使用psycopg2通过SSL连接到Google Cloud SQL Postgres DB

Python 使用psycopg2通过SSL连接到Google Cloud SQL Postgres DB,python,ssl,openssl,google-cloud-platform,psycopg2,Python,Ssl,Openssl,Google Cloud Platform,Psycopg2,直到今天,我才对加密技术有所了解,所以如果我的问题是基本的,请原谅我 我有一个gcpsql实例,它是用SSL加密为Postgres设置的。我已在GCP上创建了客户端证书,并加载和存储了: server-ca.pem client-cert.pem 客户端密钥.pem 我电脑里的文件 我正在尝试使用python3.6(使用conda安装)中的psycopg2连接到远程数据库。我已经检查了用于建立连接的文件,显然需要使用上面的文件才能建立连接。具体而言,在psycopg2.connect()函数

直到今天,我才对加密技术有所了解,所以如果我的问题是基本的,请原谅我

我有一个gcpsql实例,它是用SSL加密为Postgres设置的。我已在GCP上创建了客户端证书,并加载和存储了:

  • server-ca.pem
  • client-cert.pem
  • 客户端密钥.pem
我电脑里的文件

我正在尝试使用python3.6(使用conda安装)中的psycopg2连接到远程数据库。我已经检查了用于建立连接的文件,显然需要使用上面的文件才能建立连接。具体而言,在
psycopg2.connect()函数中,我使用以下参数:

  • sslmode='verify-ca'
  • sslcert=[client-cert.pem文件的本地路径]
  • sslkey=[client-key.pem文件的本地路径]
  • sslrootcert=[server-ca.pem文件的本地路径]
显然会有一个错误,因为根据上面的说明,文件需要以以下格式结束:
.crt
.key

经过研究,我发现我(可能)必须使用
openssl
来生成
.crt
.key
格式。我该怎么做


如果我转换
.pem
文件并将转换后的文件传递到
psycopg2.connect()
我是否能够连接到远程数据库?

使用openssl将.pem文件转换为.crt和.key文件

首先,使用命令提示符/terminal转到存储.pem文件的目录

对于.crt文件类型:

  • opensslx509-in-client-cert.pem-out-ssl-cert.crt
  • opensslx509-in-server-ca.pem-out-ca-cert.crt
对于.key文件类型:

  • openssl rsa-in-client-key.pem-out ssl-key.key

最后,要使用
psycopg2.connect()
连接到数据库,只需将上述文件的文件路径传递给
sslcert、sslkey和sslrootcert
参数。

对我来说仍然超时:(