[英]Connecting to Postgres AWS RDS Instance - “certificate verify failed”
我開始使用AWS RDS了,我正在嘗試使用AWS生成的證書(在實例啟動期間)將我的python客戶端(本地主機 - python 2.7,ubuntu 14.04)連接到AWS RDS Postgres實例。
conn = psycopg2.connect(database='db', user='db_user', password="pw",
host='xxxxx.rds.amazonaws.com', port='5432', sslmode='verify-full',
connect_timeout=10, sslrootcert = 'rds-combined-ca-bundle.pem')
但每當我試圖連接時,我都會得到
Error SSL error: certificate verify failed
我不確定我在這里缺少什么,也許是與安全組有關的東西? 我使用了錯誤的證書嗎? 如果是這樣,我該如何創建合適的?
這不是一個答案 ,而是一個建議:嘗試在您的入站規則中擺弄您的安全組。 首先確保您有一個端口打開postgres到您的IP地址。 如果失敗,請簡單地測試對所有內容的開放,如果成功失敗,請再次關閉該規則。 但如果成功,你至少知道原因是你的通信協議而不是你的憑據。 這就是今天對我有用的東西。 - 現在我自己想弄清楚為什么我可以在接受所有連接時連接,但不能通過我的客戶端IP地址。 HTH。
在我的例子中,我使用SQLAlchemy ORM並使用psycopg2(2.7.1)連接到postgres。
所以我不需要直接調用psycopg2.connect()
,而是設置SQLALCHEMY_DATABASE_URI
變量:
SQLALCHEMY_DATABASE_URI='postgres://dbuser:dbpwd@mypostgres.eu-central-1.rds.amazonaws.com:5432/msdb?sslmode=verify-full&sslrootcert=/etc/pki/pem/rds-combined-ca-bundle.pem'
。
SQLAlchemy代表我調用psycopg2.connect()
。 這對我有用。
查看您的代碼,它應該以相同的方式運行。
根據AWS文檔 ,如果您的應用程序不接受證書鏈,它可能不起作用。 因此,您可以嘗試使用特定於您所在區域的中間證書或PKCS7證書包而不是rds-combined-ca-bundle.pem
來解決問題,並查看它是否適合您。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.