Technologie

Commento <= 1.8 mit PostgreSQL >= 11.9 betreiben

Christian A Vogl
#PostgreSQL#Commento#Encryption#Verschlüsselung#Software

Als ich zum Jahreswechsel eine Kommentarfunktion auf dem Webcomic DJIL ergänzen wollte, habe ich aus den OSS-Kandidaten Commento ausgewählt.

Die Wahl von Commento

  • Commento benötigt nur geringe Ressourcen, da es in Go geschrieben ist.
  • Commento kann Kommentare für verschiedene Websites beherbergen.
  • Die Einbindung auf den Websites erfolgt simpel über ein JavaScript-Fragment.
  • Commento setzt auf den zu kommentierenden Seiten kein Cookie, bevor eine Benutzer/in sich aktiv anmeldet.
  • Commento arbeitet mit PostgreSQL, die ich MySQL & SQLite vorziehe und die ohnehin bereits in meiner Infrastruktur installiert ist für den Betrieb von Directus.
  • MIT-Lizenz

Fehler bei der Installation

Die Einrichtung von Commento verlief sehr einfach & beinahe nach Anleitung der Hersteller/innen. Einziger Fehler: Commento konnte keine Verbindung zur Datenbank herstellen. Die Fehlermeldung klingt etwas seltsam und liefert überraschend wenig Ergebnisse in der weiten Welt:

authentication method not supported (Received: 10)

oder

The authentication type 10 is not supported 

Die Ursache ist, dass Commentos Datenbank-Client keine Verschlüsselung mit dem Verfahren scram-sha-256 unterstützt.

Dieses ist in PostgreSQL seit Version 10 unterstützt, seit Version 11.9 sogar standardmäßig eingestellt, aus gutem Grund. Meine Datenbank läuft derzeit in Version 14, ein downgrade kommt nicht in Frage; jedoch fehlt mir auch die Lust, Commentos DB-Treiber anzupassen. Was tun?

Abhilfe: MD5 und scram-sha-256 parallel

PostgreSQL erlaubt die parallele Verwendung seiner Verschlüsselungsverfahren. Wenn man von scram-sha-256 auf MD5 umstellt (oder umgekehrt), werden die Kennwörter bereits vorhandener Nutzer/innen nicht neu verschlüsselt – die Datenbank (und ihre Administrator/in) kennen sie i. d. R. ja gar nicht. Nur ab der Umstellung neu- oder wiedergesetzte Kennwörter werden mit MD5 verschlüsselt.

Die Kennwörter erhalten den Verschlüsselungsmodus als Präfix; der Blick in die PG-Systemtabelle zeigt bereits schlagend den kryptographischen Fortschritt von scram-sha-256 gegenüber MD5:

postgres=# SELECT rolpassword from pg_authid;
          rolname          | rolpassword                                                              
---------------------------+--------------------------------------------------
(…)
 elbehnon                  | SCRAM-SHA-256$4096:oa9E3GgeZxjVsujrfSGLMw==$ktkYwSFG+wTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
 commento                  | md5a1a69d05bb091cc3458ab299abcxxxxx

Eine Aktualisierung der scram-sha-256-verschlüsselten Kennwörter ist nicht erforderlich, da PostgreSQL das Verfahren weiterhin anwendet. (Mögliche Performance-Beeinträchtigungen dürften irrelevant sein.)

Leider muss dafür MD5 als Standardverfahren definiert werden, ein isoliertes Aktivieren von MD5 für ein einzelnes Nutzerkonto ist m. W. nicht möglich. Dies erfolgt via postgresql.conf über

password_encryption = md5

Nach Aktivierung der Konfiguration, z. B. vermöge

pg_ctl reload -D /postgres/datadir

ist das Verfahren aktiviert; vgl. in der psql-Shell

SHOW password_encryption;

Nun setzt man das Kennwort für den Commento-DB-Nutzer neu, z. B.

\password commento

Nun aktiviert man in pg_hba.conf für den Commento-User noch MD5, z. B.

local commento commento md5

Da das Kennwort nicht geändert werden musste, nur neu gesetzt, sollte der Commento nach dem Neustart nun eine Verbindung zur Datenbank erhalten und seine Installationsarbeiten fortsetzen können.

Zu beachten ist, dass künftige Kennwortänderungen mit der schwächeren MD5-Kodierung gespeichert werden, so dass u. U. für diese Aktionen ein vorübergehender Wechsel der Verschlüsselungsmethode zu scram-sha-256 angedacht werden sollte.

Was spricht gegen Commento

Leider ist Commento nicht das Gold, das es uns vorglänzt. Die Software ist gut, wird aber von den Hersteller/innen seit zwei Jahren nicht mehr konsequent gepflegt. Sie kümmern sich sowenig darum, dass sie sogar nützliche Erweiterungen aus der Entwicklergemeinde nicht integrieren, beispielsweise eine Erweiterung zur mehrsprachigen Einrichtung von Commento.

Ich habe daher zunächst selbst einige Übersetzungen ins Deutsche eingefügt, was angesichts der geringen Rezeption des Webcomics im nicht-deutschen Raum aktuell verschmerzt werden kann. Mittelfristig werde ich jedoch Commento selbst forken & kompilieren müssen.