ssl via psql

Hallo,

ich versuche grad eine psql Verbindung aufzubauen, die ssl verwendet, da der Server nur ssl Verbindungen zulässt. Ich seh allerdings nicht, was ich angeben/tun muss. Mit “sslmode=require” willer nicht.

Die Frage erweitert sich dann, wenn ich einen Dump der DB ziehen muss. SSL-Schalter für pg_dump bzw. pg_dumpall??

Grüße und Dank im Voraus
beho

Das ist keine qualifizierende Fehlermeldung, mit der dir irgendjemand weiterhelfen kann.



elcome to psql 8.3.6 (server 8.3.5), the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)

Ich erkenne kein Problem, erst recht nicht Deines.

Andreas, jetzt den Server mal updaten gehend…

Hallo nochmal,

@ads sry für meine unpräzision:
meine Eingabe: psql [] -h host [] db [] username
[
] : an diesen Stellen habe ich in unterschiedlichen Versuchen sslmode= required reingschrieben.
und als Fehler zurückbekommen:
"psql: FATAL: kein pg_hba.conf-Eintrag für Host ‘ip’, Benutzer ‘username’, Datenbank ‘db’, SSL aus

@akretschmer ok, ich sehe du hast eine ssl Verbindung. ich versteh nur leider offenbar nicht wie du sie etablierst. Ich seh auch keinen Parameter den ich angeben könnt.

Grüße
beho

Was passiert wohl, wenn du die Fehlermeldung in Google wirfst?

klick mich

Zitat aus Deinem ersten Beitrag:

ich versuche grad eine psql Verbindung aufzubauen, die ssl verwendet, da der Server nur ssl Verbindungen zulässt.

Exakt das habe ich auch getan, mit hostssl in der pg_hba.conf. IIRC erzwinge ich damit SSL, psql hat aber auch ohne hostssl, nur mit host, eine SSL-Verbindung aufgebaut, scheinbar ist das Default. (ich hab da noch nie drüber nachgedacht…=.

Jedenfalls, nach Deinem Posting erzwingt der Server SSL. Auf Client-Seite ist da nix mehr zu machen.

Also, bau einfach mal eine Verbindung auf und schaue, was passiert. Ohne das sslmode - Dingens. Oder willst Du erzwingen, daß der Client ein Certificat hat?
Die Doku enthält übrigens dazu ein eigenes Kapitel.

Andreas

Sorry, Copy&Paste - Error

kretschmer@tux:~$ psql -U kretschmer -h apache test
Password for user kretschmer:
Welcome to psql 8.3.6, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)

Andreas, dafür nun mit aktueller Version…

Jedenfalls, nach Deinem Posting erzwingt der Server SSL.

genau.

Auf Client-Seite ist da nix mehr zu machen.
Also, bau einfach mal eine Verbindung auf und schaue, was passiert.

selber Fehler:

psql: FATAL: kein pg_hba.conf-Eintrag für Host 'ip', Benutzer 'username', Datenbank 'db', SSL aus



Ohne das sslmode - Dingens. Oder willst Du erzwingen, daß der Client ein Certificat hat?

nein.

Die Doku enthält übrigens dazu ein eigenes Kapitel.

wenn ich mit der weiterkäme würd ich doch nicht fragen :wink:

Ist der Client mit SSL-Unterstützung gebaut?

Andreas

In der psql Manpage steht ein alternativer Weg, wie du SSL auf der Clientseite erzwingen kannst. Ansonsten: ist auf dem System SSL vorhanden? Kennt der Server auch SSL, wenn du das schon verlangst?

Wie sieht dein pg_hba.conf Eintrag aus?

Ahhh…

Ich hatte das heute schon mal versucht in Gang zu bekommen, jetzt hab ich es:

kretschmer@tux:~$ psql "service=myservice sslmode=require"
Passwort:
Zeitmessung ist an.
Dies ist psql 8.3.6, das interaktive PostgreSQL-Terminal.

Geben Sie ein:  \copyright für Urheberrechtsinformationen
                \h für Hilfe über SQL-Anweisungen
                \? für Hilfe über interne Anweisungen
                \g oder Semikolon, um eine Anfrage auszuführen
                \q um zu beenden

SSL-Verbindung (Verschlüsselungsmethode: DHE-RSA-AES256-SHA, Bits: 256)

test=# \q
kretschmer@tux:~$ psql "service=myservice sslmode=disable"
Passwort:
Zeitmessung ist an.
Dies ist psql 8.3.6, das interaktive PostgreSQL-Terminal.

Geben Sie ein:  \copyright für Urheberrechtsinformationen
                \h für Hilfe über SQL-Anweisungen
                \? für Hilfe über interne Anweisungen
                \g oder Semikolon, um eine Anfrage auszuführen
                \q um zu beenden

test=#

Und dazu diese /etc/postgresql-common/pg_service.conf:

[myservice]
host=127.0.0.1
user=kretschmer
dbname=test
kretschmer@tux:~$

Die Doku zu psql nennt zwar die Möglichkeit, mit diesem conninfo-Dingens zu arbeiten, beschreibt sie aber nicht. Dazu muß man dann schon PostgreSQL: Documentation: Manuals: PostgreSQL 8.3: Database Connection Control Functions bemühen, die einem dies verrät:

sslmode

    This option determines whether or with what priority a SSL TCP/IP connection will be negotiated with the server. There are four modes: disable will attempt only an unencrypted SSL connection; allow will negotiate, trying first a non-SSL connection, then if that fails, trying an SSL connection; prefer (the default) will negotiate, trying first an SSL connection, then if that fails, trying a regular non-SSL connection; require will try only an SSL connection. sslmode is ignored for Unix domain socket communication.

    If PostgreSQL is compiled without SSL support, using option require will cause an error, while options allow and prefer will be accepted but libpq will not in fact attempt an SSL connection.

Außerdem hilfreich: /usr/share/postgresql/8.3/pg_service.conf.sample


Andreas

ok, ich habs hinbekommen.

mit

 export PGSSLMODE=require

lässt sich der Client so einstellen, dass er zwingend eine SSL-Verbindung verlangt.

Ich danke euch für eure Hilfe

Grüße
beho