Estoy tratando de configurar el certificado ssl para el servidor postgreSQL. He creado un archivo de certificado (servidor.crt) y la clave (server.clave) en el directorio de datos y la actualización de los parámetros SSL «on» para activar una conexión segura.

Sólo quiero sólo el servidor para autenticarse con el servidor de certificados en el lado del cliente y no requieren la autenticidad de cliente en el lado del servidor. Estoy usando postgresql como un cliente para conectarse y ejecutar los comandos.

Estoy usando PostgreSQL 8.4 y linux. He intentado con el siguiente comando para conectarse al servidor con ssl habilitado

       psql "postgresql://localhost:2345/postgres?sslmode=require"

pero estoy recibiendo

       psql: invalid connection option "postgresql://localhost:2345/postgres?sslmode"

Lo que estoy haciendo mal aquí? Es la manera en que yo estoy tratando de conectar al servidor con ssl habilitado el modo es la correcta? Está bien solo para autenticar el servidor y no en el cliente ?

Por favor que me ayude.

  • El puerto 2345 en lugar de la predeterminada 5432 es la intención?
  • Sí. Este es el puerto configurado.
  • Si desea que la conexión sea segura contra los ataques MITM, uso sslmode=verify-full, no sólo require.
InformationsquelleAutor Lolly | 2012-12-24

4 Comentarios

  1. 89

    psql a continuación 9.2 no acepta esta URL de la sintaxis para las opciones.

    El uso de SSL puede ser impulsado por el sslmode=value opción en la línea de comandos o la PGSSLMODE variable de entorno, pero el defecto de ser prefer, conexiones SSL será juzgado primero de forma automática, sin especificar nada.

    Ejemplo con un conninfo cadena (actualizado para postgresql 8.4)

    psql "sslmode=require host=localhost dbname=test"

    Leer el página de manual para obtener más opciones.

    • Tengo esta sintaxis de cadena de conexión desde este enlace. postgresql.org/docs/9.2/static/app-psql.html
    • He intentado con la opción demasiado psql -h localhost -p 2345 -U thirunas -d postgres "sslmode=require" -f test_schema.ddl pero dice sql: warning: extra command-line argument "sslmode=require" ignored
    • estás diciendo que tienes la sintaxis para la 9.2 documentación, sin embargo, usted está diciendo que usted está utilizando la versión 8.4. Lo que se está utilizando no se hace referencia en el 8.4 doc. Trate de poner «sslmode=se necesita» como el primer argumento demasiado.
    • Tengo el error. Acabo de notar que la versión de la diferencia en la documentación. Pero sigue teniendo en el primer argumento, me sale el mismo aviso. psql -h localhost "sslmode=require" -p 2345 -U thirunas -d postgres -f test_schema.ddl. Advertencia psql: warning: extra command-line argument "sslmode=require" ignored
    • respuesta actualizada para utilizar sólo una conninfo cadena con una sintaxis aceptada por postgresql 8.4
    • Yo no era consciente de que psql ahora se admite JDBC-estilo de la Url. Impresionante.
    • Me estoy poniendo psql: FATAL: connection requires a valid client certificate. Yo sé dónde está mi los certificados, pero ¿cómo puedo especificar que la ubicación a psql?
    • ver PGSSLCERT y PGSSLKEY variables de entorno
    • otras personas que se ejecuta en este, el conninfo cadena se utiliza en lugar de un nombre de base de datos (-d). Usted puede dar el nombre de base de datos después de la opción-d, o como el primer no-argumento de opción en la línea de comandos. Así -d postgres «sslmode=se necesita» debe ser psql [opciones] -d «dbname=postgres sslmode=requiere» [otras opciones] o psql [opciones] «dbname=postgres sslmode=se necesita». Puede mover muchas otras opciones en el conninfo cadena.

  2. 2

    psql "sslmode=require host=localhost port=2345 dbname=postgres" --username=some_user

    De acuerdo a la postgres psql documentación, sólo los parámetros de conexión que debe ir en el conninfo cadena(es por eso que en nuestro ejemplo, –nombre de usuario no está dentro de esa cadena)

    • Pensé que esta demasiado al principio, pero después de releer la Conexión a una Base de datos de la sección, tomo Una alternativa para especificar los parámetros de conexión se encuentra en una conninfo cadena, que se utiliza en lugar de un nombre de base de datos. Este mecanismo dará muy amplio control sobre la conexión. en el sentido de que puede meter cualquier cosa argumentos en la conninfo cadena. Pero también pienso que el docs podría ser más claro así.

Dejar respuesta

Please enter your comment!
Please enter your name here