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??
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.
@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.
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.
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)
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?
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:
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