Psycopg2 Python SSL Support is not compiled in

前端 未结 7 1952
梦毁少年i
梦毁少年i 2020-12-16 13:38

I am trying to connect to my postgres database using psycopg2 with sslmode=\'required\' param; however, I get the following error

psycopg2.OperationalError:          


        
7条回答
  •  半阙折子戏
    2020-12-16 14:02

    As others have said, the error message looks to be coming from Postgres. You can verify this by typing: psql sslmode=require if it gives you a pgsql terminal then ssl works with postgres, if it errors then it doesn't

    Try and remove postgres and reinstall with openssl support:

    brew uninstall postgres
    brew update
    brew install postgres --with-openssl
    

    Alternatively, and this is the way I'd suggest, there is a one click installer at http://postgresapp.com that might also make it easier to get it installed. Follow the instructions on the site to get it installed correctly.

    When I did it on Yosemite it installed at ~/Library/Application\ Support/Postgres93/var

    You'll also want to create a certificate (this could also be where the error is coming from) either from a registrar if this is going to be public facing in the slightest or self signed if it's for a dev/test environment.

    openssl req -new -text -out server.req
    openssl rsa -in privkey.pem -out server.key
    rm privkey.pem
    openssl req -x509 -in server.req -text -key server.key -out server.crt
    chmod og-rwx server.key
    

    Navigate to your config directory, by default it is: ~/Library/Application\ Support/Postgres93/var

    Enable ssl support:

    vim postgresql.conf
    # change this:
    # ssl = on
    # to this:
    ssl = on
    

    Restart the app and then check ssl with psql "sslmode=require"

    If that works then try it through your Python code. If it works with the code above, but not Python then it's definitely a Python code problem that needs to be worked through.

提交回复
热议问题