将SSL证书和密钥作为字符串传递给psycopg2.connect



我的应用程序部署在GCP中,我正试图使用psycopg2连接到DB。SSL证书和密钥不是以文件的形式存储的,所以我将以字符串的形式获取它们。

当我试图通过传递这些证书pem文件的文件路径来建立连接时,它是有效的。

psycopg2.connect(host='hostname',port=1234, connect_timeout=100, database='db', user='user', password='pwd',
sslrootcert="server-cert.pem",
sslcert="client-cert.pem",
sslkey="key.pem")

但是,当我将证书和密钥作为字符串传递时,它不起作用。它给出一个错误

FATAL:连接需要有效的客户端证书\n连接到服务器位于";主机名";,端口1234发生故障

SERVER_CERT = """-----BEGIN CERTIFICATE-----nxxxxxxn-----END CERTIFICATE-----"""
CLIENT_CERT = """-----BEGIN CERTIFICATE-----nxxxxxxn-----END CERTIFICATE-----"""
KEY = """-----BEGIN RSA PRIVATE KEY-----nxxxxn-----END RSA PRIVATE KEY-----"""
psycopg2.connect(host='hostname',port=1234, connect_timeout=100, database='db', user='user', password='pwd',
sslrootcert=SERVER_CERT,
sslcert=CLIENT_CERT,
sslkey=KEY)

我还尝试过使用ssl。DER_cert_to_PEM_cert(cert(和RSA.importKey(KEY(,但仍然失败。有没有一种方法可以传递字符串而不是文件?谢谢

几个小时前我也遇到过同样的情况。为了解决这个问题,我在python中创建了具有变量值的文件:

cert = """cert"""
file = open("cert.txt","w")
file.write(cert)
file.close()

然后,只需将路径传递到psycopg2连接。

相关内容

  • 没有找到相关文章

最新更新