簡體   English   中英

連接到Postgres AWS RDS實例 - “證書驗證失敗”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM