postgresql
  • amazon-web-services
  • ssl
  • aws-rds
  • 2016-01-08 114 views 1 likes 
    1

    我開始使用AWS RDS玩了一下,我試圖將我的Python客戶端(本地主機 - python 2.7,ubuntu 14.04)連接到AWS RDS Postgres實例,使用AWS生成的證書(在實例啓動期間)。連接到Postgres AWS RDS實例 - 「證書驗證失敗」

    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 
    

    我不知道什麼,我在這裏失蹤,或許還有相關的安全組?我使用錯誤的證書嗎?如果是這樣,我該如何創建正確的?

    回答

    0

    這不是一個答案,而是一個建議:嘗試擺弄您的安全組入口規則。首先確保你有一個端口爲postgres打開你的IP地址。如果失敗了,只需簡單地測試對所有事情的開放情況,並且無論失敗是否成功,都要重新執行規則。但如果成功了,至少你會知道原因是你的通信協議,而不是你的憑證。這就是今天爲我工作的。 - 現在我正試圖弄清楚爲什麼我可以連接所有連接,但不能通過我的客戶端IP地址。 HTH。

    0

    在我的情況下,我使用SQLAlchemy ORM並使用psycopg2(2.7.1)連接到postgres。

    所以我並不需要直接調用psycopg2.connect(),而是設置SQLALCHEMY_DATABASE_URI變量:

    SQLALCHEMY_DATABASE_URI='postgres://dbuser:[email protected]:5432/msdb?sslmode=verify-full&sslrootcert=/etc/pki/pem/rds-combined-ca-bundle.pem'

    SQLAlchemy以我的名義致電psycopg2.connect()。 這是爲我工作。

    看着你的代碼,它應該表現得一樣。

    根據AWS documentation,如果您的應用程序不接受證書鏈,它可能無法正常工作。 因此,您可以嘗試使用特定於您所在地區的中間證書或PKCS7證書包而不是rds-combined-ca-bundle.pem來解決問題,並查看它是否適用於您。

    相關問題