{"id":260,"date":"2009-05-13T19:37:53","date_gmt":"2009-05-13T19:37:53","guid":{"rendered":"http:\/\/blog.benny-baumann.de\/?p=260"},"modified":"2009-05-13T19:39:50","modified_gmt":"2009-05-13T19:39:50","slug":"apache2-gnutls-und-andere-kaputte-software","status":"publish","type":"post","link":"https:\/\/blog.benny-baumann.de\/?p=260","title":{"rendered":"Apache2, GnuTLS und andere kaputte Software"},"content":{"rendered":"<p>Hatte ich schon mal erw\u00e4hnt, was f\u00fcr ein Krampf es ist, mehrere SSL-Pages auf einer IP zu hosten? Glaube nicht. W\u00e4re das also grad einmal der richtige Zeitpunkt daf\u00fcr, das einfach mal nachzuholen. Zumal Debian in letzter Zeit wiedereinmal Spa\u00df daran gefunden zu haben, Testing als Beta-Tester einzuspannen. Aber gut, alles zu seiner Zeit.<!--more--><\/p>\n<p>Da ich derzeit auf dem Server etwa 10 Domains habe (Subdomains nicht mitgerechnet), und ein Teil dieser auch \u00fcber SSL erreichbar sein soll, war ich l\u00e4nger am Suchen, wie man am besten den SSL-Support implementiert und welche Bibliothek sich dazu am besten eignet. Da bei mir auf dem Server ein Apache werkelt (mehr oder weniger durch andere Abh\u00e4ngigkeiten begr\u00fcndet), gibt es eigentlich nur zwei M\u00f6glichkeiten: mod_ssl, den die meisten kennen d\u00fcrften, oder mod_gnutls. Nun ist es so: SSL und TLS sind zwar \u00e4hnlich, aber nicht gleich. Gerade nicht, wenn es darum geht, dem Server mitzuteilen, welche Domain man denn erreichen m\u00f6chte.<\/p>\n<p>Und hier liegt auch der eigentliche Knackpunkt: Mit mod_ssl gar nicht und mit mod_gnutls nur als stochastisches Zufallsexperiment. Das Unverm\u00f6gen von mod_ssl liegt dabei weniger am Protokoll, als vielmehr daran, dass OpenSSL, was als zugrundeliegende Implementierung genutzt wird, eine Reihe von Erweiterungen, die f\u00fcr SNI (Server Name Indication) ben\u00f6tigt werden, nicht unterst\u00fctzt. Zumindest nicht in den Versionen, die Debian in Pakete packt.<\/p>\n<p>Bleibt als Alternative mod_gnutls. Hier sind zwar alle n\u00f6tigen Funktionen und Protokoll-Erweiterungen implementiert, daf\u00fcr scheitert es oftmals an der Umsetzung und Mithilfe des Clients, da die Nutzung von TLS 1.0 wegen verschiedener Protokoll-Inkompatibilit\u00e4ten mit SSL v2\/3 nicht standardm\u00e4\u00dfig aktiviert ist.<\/p>\n<p>Was macht man also? Nicht vorhandenen oder kaputten Support installieren? Ich hab mich vorerst f\u00fcr mod_gnutls entschieden: Ganz einfach aus der Notwendigkeit heraus, dass ich SSL f\u00fcr mehrere Subdomains mit unterschiedlichen Zertifikaten brauchte. Die L\u00f6sung mit mehreren Domains in einem Zertifikat war f\u00fcr meinen Server n\u00e4mlich leider nicht umsetzbar.<\/p>\n<p>Also das entsprechende Debian-Paket libapache2-mod-gnutls 0.5.1-1 installiert und gefreut, dass alles ging. Bis der Apache von 2.2.11-2 auf 2.2.11-3 geupdated werden musste und ein <a href=\"http:\/\/bugs.debian.org\/cgi-bin\/bugreport.cgi?bug=523060\">richtig netter Bug<\/a> zuschlug und das inzwischen erfolgreich auf Version 0.5.2-1 aktualisierte Paket mit einem Fehler beim Apache-Start seinen Dienst quittierte:<\/p>\n<pre lang=\"text\">\r\napache2: Syntax error on line 187 of \/etc\/apache2\/apache2.conf:\r\nSyntax error on line 1 of \/etc\/apache2\/mods-enabled\/gnutls.load: Cannot load\r\n\/usr\/lib\/apache2\/modules\/mod_gnutls.so into server:\r\n\/usr\/lib\/apache2\/modules\/mod_gnutls.so: undefined symbol: gnutls_malloc\r\n<\/pre>\n<p>Je nach Variation der Paket-Versionen konnte man zwar auch noch weitere undefinierte Symbole entlocken, die Tatsache, dass das Paket nicht lief, blieb aber erhalten. Also musste SSL erstmal radikal abgeschaltet werden und die zugeh\u00f6rigen Subdomains lahmgelegt werden.<\/p>\n<p>Doch die Abhilfe f\u00fcr das Problem kam jetzt gesternn in Form <a href=\"http:\/\/bugs.debian.org\/cgi-bin\/bugreport.cgi?bug=523060#20\">einer Antwort im Bugtracker<\/a>, die ich dann gleich mal ausprobiert hab. Nach dem dpkgbuildpackage zuerst zwar noch \u00fcber 2-3 fehlende Dev-Pakete gemeckert hat (wunderte mich zwar, da ich die meist gleich mitinstallier &#8211; inklusive der DBGs \ud83d\ude09 &#8211; war das installieren in 10 Minuten erledigt. Die 0.5.4 ist im System zwar derzeit als 0.5.2-1 installiert, das macht aber nichts, da somit die R\u00fcckkehr zu den gebrochenen Debian-Paketen sobald es ein Update gibt wieder erfolgt.<\/p>\n<p>Apropos Debian und Qualit\u00e4t. Das Wort Qualit\u00e4t setzt sich ja bekanntlich aus dem Wort Qual und einem Rest zusammen. Anschaulich machten die Debian-Maintainer dies die Tage mit dem <a href=\"http:\/\/bugs.debian.org\/cgi-bin\/bugreport.cgi?bug=527161\">Paket sasl2-bin<\/a>, dem sie einfach mal ausredeten SASL-Datenbank-Dateien lesen oder verarbeiten zu wollen. Nach dem ich also auf diese defekte Paketversion updated, stellte ich mehr oder weniger durch Zufall fest, dass meine Verwaltungsoberfl\u00e4che Probleme dabei hatte, neue Mailkonten im Mailserver anzulegen und stattdessen mit recht bizarren Fehlermeldungen den Dienst verweigerte. Die Reparatur der Login-DBs ben\u00f6tigte ein Downgrad, ein Version-Forbid und ein vollst\u00e4ndiges Rebuild der SASL-DB durch die Admin-Software. Dieses war mittels eines UPDATE-Befehls in der Datenbank recht schnell eingeleitet, auf Grund diverser Nettigkeiten der Verwaltungssoftware konnte ich sogar einen netten Bug beobachten: Befand sich ein Mailpostfach mit Weiterleitung noch im Status &#8222;change&#8220;, so lie\u00df sich der Debugger der Verwaltungsoberfl\u00e4che nicht aufrufen. Stattdessen erschien einn FIXME mit Datei und Zeilennummer. Wird die Tage als Report noch an die Entwickler rausgehen, da das dann doch etwas zu heftig reagiert ist, auf etwas, was man nicht kennt \ud83d\ude42<\/p>\n<p>Aber bitte Debian-Entwickler: K\u00f6nnt ihr eure Spiel-Versionen nicht bitte mit dem Versionstag playground in der Version kennzeichnen? Ich dachte f\u00fcr Spielereien gibt es unstable \ud83d\ude09<\/p>\n<p class=\"wp-flattr-button\"><a href=\"https:\/\/blog.benny-baumann.de\/?flattrss_redirect&amp;id=260&amp;md5=a73fd7160520d15a7631234903155a03\" title=\"Flattr\" target=\"_blank\"><img src=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" srcset=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" alt=\"Flattr this!\"\/><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Hatte ich schon mal erw\u00e4hnt, was f\u00fcr ein Krampf es ist, mehrere SSL-Pages auf einer IP zu hosten? Glaube nicht. W\u00e4re das also grad einmal der richtige Zeitpunkt daf\u00fcr, das einfach mal nachzuholen. Zumal Debian in letzter Zeit wiedereinmal Spa\u00df daran gefunden zu haben, Testing als Beta-Tester einzuspannen. Aber gut, alles zu seiner Zeit.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[4],"tags":[156,10,165,50],"class_list":["post-260","post","type-post","status-publish","format-standard","hentry","category-server","tag-apache","tag-debian","tag-gnutls","tag-ssl"],"_links":{"self":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/260","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=260"}],"version-history":[{"count":2,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/260\/revisions"}],"predecessor-version":[{"id":262,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/260\/revisions\/262"}],"wp:attachment":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=260"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=260"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=260"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}