Verbindung zu PostgreSQL im SSL-Modus

Shihab Sikder 12 Oktober 2023
Verbindung zu PostgreSQL im SSL-Modus

Postgres verwendet SSL, um die Sicherheit der Verbindung zu überprüfen, wenn wir versuchen, eine Verbindung zu einer Datenbank herzustellen. In HTTP ist es standardmäßig deaktiviert, aber in HTTPS benötigen wir den SSL-Modus der Verbindung, um Vorgänge in der Postgres-Datenbank auszuführen.

Es kann mehrere Angriffsparameter geben, wenn die Verbindung nicht privat ist. Jeder kann die Sniffing-Tools einfach über die Datenbank-Request-Response verwenden.

Was sind die SSL-Modi in PostgreSQL

Postgres bietet verschiedene Arten von SSL-Modi. Sehen wir uns zunächst die allgemeine Verbindungszeichenfolge für Postgres an.

const connectionString =
    'postgres://<database_username>:<database_userpassword>@<hostaddress>:<port_no>/<database_name>'

Jetzt können wir den Parameter sslmode wie folgt hinzufügen.

const connectionString =
    'postgres://<database_username>:<database_userpassword>@<hostaddress>:<port_no>/<database_name>?sslmode=<ssl_mode>'

Hier ist die Liste der von Postgres bereitgestellten SSL-Modi.

sslmode Abhörschutz MITM-Schutz Beschreibung
disable Nein Nein Es wird sich nicht um die Sicherheit kümmern. Es werden keine Daten verschlüsselt.
allow Vielleicht Nein Es kümmert sich nicht um die Sicherheit und verschlüsselt die Verbindung.
prefer Vielleicht Nein Es wird keine Verschlüsselung erzwingen; Wenn der Server den Overhead der Verschlüsselung unterstützt, verschlüsselt er.
require Ja Nein Verschlüsseln Sie die Daten, es entsteht ein gewisser Overhead der Verschlüsselung, und das Netzwerk stellt den richtigen Server sicher, mit dem der Benutzer eine Verbindung herstellen möchte.
verify-ca Ja Hängt von der CA-Richtlinie ab Verschlüsseln Sie die Daten, den Overhead der Verschlüsselung und stellen Sie immer eine Verbindung zum vertrauenswürdigen Server her.
verify-full Ja Ja Daten werden verschlüsselt, der Benutzer akzeptiert den Overhead, Netzwerk und Server sind beide vertrauenswürdig und verbinden sich nur mit dem spezifischen Server, der gefragt wurde.

Sie können dieses Flag auch in der Umgebungsvariable setzen.

PGSSLMODE=verify-full PGSSLROOTCERT=ca.pem

Hier ist ca.pem der Schlüssel. Sie müssen es von einer Zertifizierungsstelle abholen; CA steht für Certificate Authority.

Um den Server vollständig mit dem Postgres-SSL-Modus zu konfigurieren, können Sie den Schritten in diesem Blog folgen.

Hier ist ein Hinweis aus der offiziellen Postgres-Dokumentation zum SSL-Modus.

Using NULL-SHA or NULL-MD5 ciphers, authentication can be done without any encryption overhead. A man-in-the-middle, on the other hand, might read and pass communications between the client and the server. In addition, as compared to the overhead of authentication, encryption has a low overhead. NULL ciphers are not recommended for these reasons.

Sie können sich auch die offizielle Dokumentation hier ansehen. Sie zeigten, wie man ein Zertifikat selbst signiert, während man den SSL-Modus verwendet.

Shihab Sikder avatar Shihab Sikder avatar

I'm Shihab Sikder, a professional Backend Developer with experience in problem-solving and content writing. Building secure, scalable, and reliable backend architecture is my motive. I'm working with two companies as a part-time backend engineer.

LinkedIn Website