SSL Einrichten

Hallo,
nachdem ich seit einem Tag versuche eine SSL Verbindung erfolglos einzurichten suche ich hier mal nach Hilfe.

Ich habe einen PG 10.5 Server in einer Windows VM laufen und OpenSSL installiert. Dann mit den gefundenen Anleitungen (hauptsächlich aus dem PG Handbuch):

openssl req -new -x509 -days 365 -nodes -text -out server.crt -keyout server.key -subj “/CN=www.mytest.com
openssl req -new -nodes -text -out root.csr -keyout root.key -subj “/CN=www.mytest.com
openssl x509 -req -in root.csr -text -days 3650 -extfile C:\Programme\OpenSSL-Win64\bin\cnf\openssl.cnf -extensions v3_ca -signkey root.key -out root.crt
openssl req -new -nodes -text -out server.csr -keyout server.key -subj “/CN=www.mytest.com
openssl x509 -req -in server.csr -text -days 365 -CA root.crt -CAkey root.key -CAcreateserial -out server.crt

die server.key, server.crt, root.key und root.crt erstellen können.

Die pg_hba.conf:
hostssl all all 0.0.0.0/0 trust
und postgresql.conf mit
ssl=on versehen.

Ich denke das noch eine client.crt oder client.key erstellt werden muss.
Wird die auf dem Server erstellt, und dann an den Client weitergegeben mit der root.crt?
Muss OpelSSL auf den Client´s installiert werden?
Finde leider keine Anleitung die mir Licht ins dunkel bringt :frowning:

Grüße Frank

Hallo,
ok danke. Die hatte ich schon versucht umzusetzen.

Hallo,
ich meine alles wie in der ersten Beschreibung ausgeführt zu haben. Allerdings bekomme ich beim Aufruf:
openssl req -new -key server.key -days 3650 -out server.crt -x509 -subj “/C=CA/…”
die Meldung:
Can’t load ./.rnd into RNG
16132:error:2406F079:random number generator:RAND_load_file:Cannot open file:crypto\rand\randfile.c:88:Filename=./.rnd
Muss zu openSSL noch was nachinstalliert werden? Die .key und .crt werden erstellt, aber ich weiß nicht ob durch die Fehlermeldung die Dateien gültig sind.
Vielleicht noch ein Hinweis?
Grüße Frank

Windows?

Du kannst doch die Schlüssel auch auf einem richtigen OS erstellen…

Ja Windows,
da sollte es ja auch klappen mit OpenSSL, oder setzt das niemand ein :slight_smile:

Windows dürfte hier in der Minderzahl sein :wink:

Du brauchst kein Client Cert.
Du kannst das alles in der postgesql.conf festlegen und in der hba angeben für wen das gelten soll.
Auf jeden fall macht es Sinn, die SSL-Verschlüsselung durch den Server zu erzwingen, damit sich niemand unencrypted anmelden kann.
TLS 1.2 wird ebenfalls unterstützt, TLS 1.3 wird zwar von OpenSSL 1.1.x unterstützt, weiß aber gerade nicht ob Postgres 11 da schon
./configure switches für hat.

Wenn alles läuft und Du deine LOG Einstellungen auch Connections loggen lässt, sollte es ungefähr so aussehen. Dann siehst Du auch das die Verbindungen via TLS reinkommen, welche Protokollversion und welche Cypher genutzt werden:

2018-12-14 17:32:25.138 CET [6708] LOG: database system was shut down at 2018-12-14 17:32:17 CET
2018-12-14 17:32:25.340 CET [3416] LOG: database system is ready to accept connections
2018-12-14 17:38:09.336 CET [6176] LOG: connection received: host=127.0.0.1 port=5922
2018-12-14 17:38:12.261 CET [7560] LOG: connection received: host=127.0.0.1 port=5924
2018-12-14 17:38:12.285 CET [7560] LOG: connection authorized: user=hmsusr database=hmailserver SSL enabled (protocol=TLSv1.2, cipher=ECDHE-RSA-AES256-GCM-SHA384, compression=off)