Quassel IRC und Let’s Encrypt unter Debian

letsencrypt-quassel_banner

Wer weechat/screen bzw. irssi kennt, dem ist das Prinzip geläufig: ein kleiner Server ist dauerhaft mit dem IRC verbunden, der Nutzer verbindet sich darauf und hat somit die Möglichkeit eines Backlogs um Chats auch später nachlesen zu können. Aus Gründen der Faulheit und weil ich lieber grafische Clients als terminalbasierte habe, verwende ich zu diesem Zweck den Client „Quassel„. Besser gesagt: die Kombination aus Quassel Core und Quassel Client, letzteren sowohl am PC als auch auf mobilen Android-Geräten. Auch unter Windows 7 funktioniert das übrigens einwandfrei!

Die Ausgangssituation

Quassel Core erstellt bei der Installation direkt ein selbst-signiertes Zertifikat für die Transportverschlüsselung über SSL. Das ist okay, mit der – optional einmaligen – Meldung dazu im Client kann ich gut leben. Nun hat der kleine VPS aber für den darauf laufenden Webserver seit kurzem ein gültiges Zertifikat von Let’s Encrypt. Warum also nicht das auch für Quassel nutzen?

So geht’s!

Ich gehe davon aus, dass du Debian auf deinem System nutzt. Bei anderen Distributionen sollte das aber ähnlich bis identisch funktionieren.

  1. Als erstes überprüfst du, ob dein Quassel Core normal gestartet wurde oder als Systemdienst läuft. Wenn dein init System dir folgende Ausgabe liefert,
    # service quasselcore status
     quasselcore.service - LSB: distributed IRC client using a central core component
     Loaded: loaded (/etc/init.d/quasselcore)
     Active: active (running)...
  2. Je nachdem, wie du Quassel serverseitig betreibst, liegt das bestehende Zertifikat unter:
    • ~/.config/quassel-irc.org/ (Nutzer)
    • /var/lib/quassel/ (Systemdienst)
  3. Das existierende Zertifikat sichern wir lieber mal, man weiß ja nie:
    # cp /var/lib/quassel/quasselCert.pem /var/lib/quassel/quasselCert.bkup
  4. Jetzt brauchst du ein PEM Bundle aus dem private key und den fullchain. Dazu fügst du beide Dateien zusammen. In meinem Fall lagen die Dateien im Unterordner für die entsprechende Domain.
    # cd /etc/letsencrypt/live/name.der.seite/
    # cat privkey.pem fullchain.pem >> /var/lib/quasselCert.pem
  5. Abschließend startest du den Quassel Dienst neu – ein einfacher reload genügt nicht!
    # service quassel restart

Das war’s schon. Ab sofort läuft alles wie bisher – nur eben mit gültigem SSL-Zertifikat.
Ach ja: wer lieber Weechat mag, der legt das PEM Bundle einfach unter ~/.weechat/ssl ab und lädt mit /relay sslcertkey das neu Zertifikat.

7 Gedanken zu „Quassel IRC und Let’s Encrypt unter Debian“

  1. Mein Quasselcore stürzt hart ab, wenn ich das versuche. Irgendwelche Tipps?

    Quassel IRC: 0.12.3 732615f1a1ba7391ef21fe723c5840bf035a9d19
    # 0 quasselcore-static-0.12.3 0x08492a2c Quassel::logBacktrace(QString const
    &)
    # 1 quasselcore-static-0.12.3 0x08462598 Quassel::handleSignal(int)
    # 2 0xb7750500 __kernel_sigreturn
    # 3 quasselcore-static-0.12.3 0x08830b4b BIO_write
    # 4 quasselcore-static-0.12.3 0x088c45c8 X509_signature_dump
    # 5 quasselcore-static-0.12.3 0x088ae8c7 0x00000000
    # 6 libcrypto.so.10 0xb712834c 0x00000000
    # 7 libcrypto.so.10 0xb7128c67 EVP_PKEY_free
    # 8 libcrypto.so.10 0xb71384c9 0x00000000
    # 9 libcrypto.so.10 0xb713f98c 0x00000000
    # 10 libcrypto.so.10 0xb713fb6c ASN1_template_free
    # 11 libcrypto.so.10 0xb713fa68 0x00000000
    # 12 libcrypto.so.10 0xb713fb6c ASN1_template_free
    # 13 libcrypto.so.10 0xb713fa68 0x00000000
    # 14 libcrypto.so.10 0xb713fbb8 ASN1_item_free
    # 15 libcrypto.so.10 0xb713a766 X509_free
    # 16 quasselcore-static-0.12.3 0x084e93d2 0x00000000
    # 17 quasselcore-static-0.12.3 0x084cd781 0x00000000
    # 18 quasselcore-static-0.12.3 0x08367ecd SslServer::~SslServer()
    # 19 quasselcore-static-0.12.3 0x08382177 Core::~Core()
    # 20 quasselcore-static-0.12.3 0x08382382 Core::~Core()
    # 21 quasselcore-static-0.12.3 0x0837a941 Core::destroy()
    # 22 quasselcore-static-0.12.3 0x08354e62 CoreApplicationInternal::~CoreAppli
    cationInternal()
    # 23 quasselcore-static-0.12.3 0x08354f5e CoreApplication::~CoreApplication()
    # 24 quasselcore-static-0.12.3 0x080ef592 main
    # 25 libc.so.6 0xb7557635 __libc_start_main
    # 26 quasselcore-static-0.12.3 0x080f0d01 0x00000000
    Quassel IRC: 0.12.3 732615f1a1ba7391ef21fe723c5840bf035a9d19
    # 0 quasselcore-static-0.12.3 0x08492a2c Quassel::logBacktrace(QString const&)
    # 1 quasselcore-static-0.12.3 0x08462598 Quassel::handleSignal(int)
    # 2 0xb7789500 __kernel_sigreturn
    # 3 quasselcore-static-0.12.3 0x0885f091 0x00000000
    # 4 quasselcore-static-0.12.3 0x0885f3f0 X509_check_trust
    # 5 quasselcore-static-0.12.3 0x08858641 X509_verify_cert
    # 6 libssl.so.10 0xb706e10c ssl3_output_cert_chain
    # 7 libssl.so.10 0xb7062700 ssl3_send_server_certificate
    # 8 libssl.so.10 0xb706380b ssl3_accept
    # 9 libssl.so.10 0xb708304b SSL_accept
    # 10 libssl.so.10 0xb706fcb2 ssl23_get_client_hello
    # 11 libssl.so.10 0xb7070583 ssl23_accept
    # 12 libssl.so.10 0xb708304b SSL_accept
    # 13 quasselcore-static-0.12.3 0x084e8632 0x00000000
    # 14 quasselcore-static-0.12.3 0x084e510f 0x00000000
    # 15 quasselcore-static-0.12.3 0x084e6896 0x00000000
    # 16 quasselcore-static-0.12.3 0x084d4398 0x00000000
    # 17 quasselcore-static-0.12.3 0x081e4126 0x00000000
    # 18 quasselcore-static-0.12.3 0x08217515 0x00000000
    # 19 quasselcore-static-0.12.3 0x084beda8 0x00000000
    # 20 quasselcore-static-0.12.3 0x084b1719 0x00000000
    # 21 quasselcore-static-0.12.3 0x084c9deb 0x00000000
    # 22 quasselcore-static-0.12.3 0x081bde90 0x00000000
    # 23 quasselcore-static-0.12.3 0x081bdb4e 0x00000000
    # 24 quasselcore-static-0.12.3 0x082054b4 0x00000000
    # 25 quasselcore-static-0.12.3 0x082057f2 0x00000000
    # 26 quasselcore-static-0.12.3 0x08205c57 0x00000000
    # 27 quasselcore-static-0.12.3 0x0831bc08 0x00000000
    # 28 quasselcore-static-0.12.3 0x081c475d 0x00000000
    # 29 quasselcore-static-0.12.3 0x080ef5b6 main
    # 30 libc.so.6 0xb7590635 __libc_start_main
    # 31 quasselcore-static-0.12.3 0x080f0d01 0x00000000

    1. Ergänzung: Der Absturz passiert erst, wenn ich mich mit einem Client versuche, zu verbinden, wenn ich das vorhin richtig gesehen habe.

      1. Der Quasselcore ist der neueste, statisch kompilierte (quasselcore-static-0.12.3) und er läuft auf Fedora release 17 (Beefy Miracle).

        1. Fedora _17_? Das hat doch schon seit bald drei Jahren EOL-Status erreicht und bekommt keinerlei Updates mehr. Ich vermute auch, dass darin beziehungsweise in einer alten openssl Version das Problem liegt.

  2. Ja, habe ich mir heute auch schon mal überlegt. Ich muss dringend mal meinen VServer auf eine neue Distribution aktualisieren.

    1. Mach das unbedingt! So ein veralteter Server ist run echtes Risiko.
      Hoffentlich hilft es auch beim Problem mit Quassel.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *