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.