Inhaltsverzeichnis
lighttpd+openSSL von Hand kompilieren und als DEB-Paket verpacken
Ziel dieser Aktion ist es, nicht den Standard-Ubuntu-Lighttpd zu ersätzen, sondern einen Alternativ-Lighttpd daneben zu betreiben, damit die Ubuntu-abhängigkeiten nicht beeinflusst werden.
Es kann durch die unten beschriebene kleine Änderung in der Datei /etc/init.d/lighttpd entschieden werden, welche Lighttpd-Version starten soll.
Beide Lighttpd's verwenden die selben Konfigurationsdateien, damit wird der selbst gebaute Lighttpd auch nicht mehr funktionieren, wenn man den Lighttpd von Ubuntu komplett entfernt!
Ubuntu 10.04 LTS
für Ubuntu 10.04 LTS gibt es nur openSSL Version 0.9.8k, die leider nicht LTS 1.2 unterstützt;
dmit wir das trotzdem einsetzen können, muss openSSL+Lighttpd aus den Quellen selbst gebaut werden
Als erstes muß eine "Wegschmeiß-System" erstellt werden (z.B. eine VM; Updates nicht vergessen!) und auf ihr ein Lighttpd-Web-Auftritt konfiguriert werden; dann erst weitermachen.
Vorbereitungen: benötigte Pakte installieren
die deb-src-Repositories müssen erreichbar sein:
> vi /etc/apt/sources.list ... deb-src http://de.archive.ubuntu.com/ubuntu/ lucid main restricted ...
Pakete zum kompilieren installieren:
> aptitude update > aptitude build-dep lighttpd
Dann derden diese Pakete installiert:
autoconf
automake
autotools-dev
binutils
build-essential
comerr-dev
cvs
debhelper
diffstat
dpkg-dev
g++
g++-4.4
gcc
gcc-4.4
gettext
html2text
intltool-debian
krb5-multidev
libattr1-dev
libbz2-dev
libc-dev-bin
libc6-dev
libcroco3
libfcgi-dev
libfcgi0ldbl
libfile-copy-recursive-perl
libgamin-dev
libgdbm-dev
libgssrpc4
libkadm5clnt-mit7
libkadm5srv-mit7
libkdb5-4
libkrb5-dev
libldap2-dev
libltdl-dev
liblua5.1-0
liblua5.1-0-dev
liblzma1
libmail-sendmail-perl
libmemcache-dev
libmemcache0
libmysqlclient-dev
libncurses5-dev
libpcre3-dev
libpcrecpp0
libreadline-dev
libreadline6-dev
libsqlite3-dev
libssl-dev
libstdc++6-4.4-dev
libsys-hostname-long-perl
libtool
libxml2-dev
linux-libc-dev
m4
manpages-dev
patch
pkg-config
po-debconf
quilt
update-inetd
uuid-dev
xz-utils
zlib1g-dev
Programme bauen
> wget -c http://www.openssl.org/source/openssl-1.0.1e.tar.gz
> tar xzf openssl-1.0.1e.tar.gz > cd openssl-1.0.1e > ./config --prefix=/usr/local --openssldir=/usr/local/openssl shared > make > make install > cd ..
> wget -c http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.33.tar.gz
> tar xzf lighttpd-1.4.33.tar.gz > cd lighttpd-1.4.33 > make clean > ./autogen.sh > ./configure --sysconfdir=/etc/lighttpd/ --prefix=/usr/local --with-openssl-includes=/usr/local/include/ --with-openssl-libs=/usr/local/lib/ --with-openssl=/usr/local/openssl/ --enable-static=no --enable-shared=yes --enable-lfs --with-mysql --with-attr --with-pcre --with-zlib --with-bzip2 --with-fam --with-gdbm --with-memcache --with-lua > make > make install > cd ..
neue Programme ins System integrieren und starten
> /etc/init.d/lighttpd stop
> ldconfig -n /usr/local/lib
> cp /etc/init.d/lighttpd /etc/init.d/lighttpd_alt > cp /etc/init.d/lighttpd /etc/init.d/lighttpd_neu > vi /etc/init.d/lighttpd_neu ... LD_LIBRARY_PATH="/usr/local/lib:/lib64:/lib:/usr/lib" export LD_LIBRARY_PATH PATH=/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/local/sbin/lighttpd ...
> touch /etc/profile.d/openssl.sh
> chmod 0755 /etc/profile.d/openssl.sh
> vi /etc/profile.d/openssl.sh
#!/bin/sh
if [ -z "${LD_LIBRARY_PATH}" ] ; then
LD_LIBRARY_PATH="/usr/local/lib:/lib64:/lib:/usr/lib"
export LD_LIBRARY_PATH
else
LD_LIBRARY_PATH="/usr/local/lib:${LD_LIBRARY_PATH}"
export LD_LIBRARY_PATH
fi
> cat /etc/init.d/lighttpd_neu > /etc/init.d/lighttpd > /etc/init.d/lighttpd start
Debian-Paket bauen
Wenn alles zu unserer Zufriedenstellung läuft, dann können wir ein Binärpaket bauen.
als erstes von allen installierten Dateien ein TAR-Archiv erstellen:
> tar czf lighttpd-1.4.33+openssl-1.0.1e_ubuntu-10.04_amd64.tgz /etc/profile.d/openssl.sh /etc/init.d/lighttpd_neu /usr/local/bin /usr/local/include /usr/local/lib /usr/local/openssl /usr/local/sbin /usr/local/share
mit Hilfe des TAR-Archives ein dediziertes Binärverzeichnis erstellen:
> mkdir -p lighttpd+openssl > tar xzf lighttpd-1.4.33+openssl-1.0.1e_ubuntu-10.04_amd64.tgz -C lighttpd+openssl > du -sk lighttpd+openssl 17648 lighttpd+openssl
die DEBIAN-Dateien erstellen
DEBIAN-Verzeichnis erstellen:
> mkdir lighttpd+openssl/DEBIAN
Es sollte darauf geachtet werden, dass diese Skripte mehrfach hintereinander gestartet werden dürfen ohne irgendwelchen Quatsch zu machen!
META-Daten des Paketes
Dieser Inhalt kann größtenteils aus aptitude show lighttpd übernommen werden:
> vi lighttpd+openssl/DEBIAN/control Package: lighttpd+openssl Version: 1.4.33+1.0.1e-01 Section: misc Priority: optional Architecture: amd64 Depends: libattr1 (>= 2.4.41-1), libbz2-1.0, libc6 (>= 2.4), libgamin0 | libfam0, libldap-2.4-2 (>= 2.4.7), libpcre3 (>= 7.7), zlib1g (>= 1:1.1.4), lsb-base (>= 3.2-14), mime-support, libterm-readline-perl-perl Installed-Size: 17648 Maintainer: Fritz <meine@email-adresse.de> Homepage: http://www.lighttpd.net Conflicts: cherokee (<= 0.6.1-1), lighttpd+openssl Provides: httpd, httpd-cgi Description: schneller Webserver mit geringem Speicherverbrauch Dieses Paket enthält die neuesten Versionen von lighttpd und openssl direkt von den Seiten der Autoren. Sie wurden auf einem Ubuntu 10.04.4 LTS kompiliert und in das Verzeichnis /usr/local installiert. Es wird die Konfigurationsdatei vom lighttpd unter /etc/lighttpd/lighttpd.conf erwartet.
Konfigurationsdateien
hier werden die Konfigurationsdateien aufgelistet (due werden nur mit PURGE entfernt):
> touch lighttpd+openssl/DEBIAN/conffiles
In unserem Fall bleibt diese Datei leer (oder sie kann auch ganz weg gelassen werden), weil wir die Konfigurationsdateien aus dem originalen Ubuntu-Paket "lighttpd" verwenden.
vor der Installation
Dieses Skript wird ausgeführt, bevor das Paket aus der Debian-Archivdatei (*.deb) entpackt wird. Hier wird der lighttpd-Dienst angehalten:
> touch lighttpd+openssl/DEBIAN/preinst > chmod 0755 lighttpd+openssl/DEBIAN/preinst > vi lighttpd+openssl/DEBIAN/preinst #!/bin/sh service lighttpd stop
nach der Installation
Diese Skript stellt normalerweise die benötigte Konfiguration des Paketes fertig, nachdem es aus seiner Debian-Archivdatei (».deb«-Datei) entpackt worden ist. Oft fragen »postinst«-Skripte den Benutzer nach Eingaben und/oder warnen ihn, dass, wenn er die Standardwerte akzeptiert, er daran denken muss, das Paket neu zu konfigurieren, wenn es die Situation erfordert. Viele »postinst«-Skripte führen nach dem Installieren/Updaten, die für das Starten bzw. Neustarten der Dienste benötigten Kommandos aus.
> touch lighttpd+openssl/DEBIAN/postinst
> chmod 0755 lighttpd+openssl/DEBIAN/postinst
> vi lighttpd+openssl/DEBIAN/postinst
#!/bin/sh
if [ ! -r /etc/init.d/lighttpd_alt ] ; then
cat /etc/init.d/lighttpd > /etc/init.d/lighttpd_alt
fi
if [ -r /etc/init.d/lighttpd_neu ] ; then
cat /etc/init.d/lighttpd_neu > /etc/init.d/lighttpd
fi
if [ -n "$(egrep 'ssl[.]honor-cipher-order.*[=].*"[Dd][Ii][Ss][Aa][Bb][Ll][Ee]"' /etc/lighttpd/conf-enabled/10-ssl.conf)" ] ; then
sed -i 's/ssl[.]honor-cipher-order.*[=].*"[Dd][Ii][Ss][Aa][Bb][Ll][Ee]"/ssl.honor-cipher-order = "enable"/' /etc/lighttpd/conf-enabled/10-ssl.conf
fi
. /etc/profile.d/openssl.sh
service lighttpd restart
vorher löschen
Dieses Skript stoppt üblicherweise alle Dienste die mit dem Paket verknüpft sind. Es wird ausgeführt bevor alle Dateien des Paketes gelöscht werden.
> touch lighttpd+openssl/DEBIAN/prerm > chmod 0755 lighttpd+openssl/DEBIAN/prerm > vi lighttpd+openssl/DEBIAN/prerm #!/bin/sh service lighttpd stop
nachher löschen
Dieses Skript ändert Links die mit dem Paket zu tun haben und/oder löscht Dateien die vom Paket angelegt worden sind.
> touch lighttpd+openssl/DEBIAN/postrm
> chmod 0755 lighttpd+openssl/DEBIAN/postrm
> vi lighttpd+openssl/DEBIAN/postrm
#!/bin/sh
if [ -r /etc/init.d/lighttpd_alt ] ; then
cat /etc/init.d/lighttpd_alt > /etc/init.d/lighttpd
fi
if [ -n "$(egrep 'ssl[.]honor-cipher-order.*[=].*"[Ee][Nn][Aa][Bb][Ll][Ee]"' /etc/lighttpd/conf-enabled/10-ssl.conf)" ] ; then
sed -i 's/ssl[.]honor-cipher-order.*[=].*"[Ee][Nn][Aa][Bb][Ll][Ee]"/ssl.honor-cipher-order = "disable"/' /etc/lighttpd/conf-enabled/10-ssl.conf
fi
rm -f /etc/init.d/lighttpd_alt
service lighttpd start
DEB-Paket erstellen
deb-Paket bauen:
> dpkg -b lighttpd+openssl lighttpd-1.4.33+openssl-1.0.1e_ubuntu-10.04_amd64.deb dpkg-deb: Baue Paket »lighttpd+openssl« in »lighttpd-1.4.33+openssl-1.0.1e_ubuntu-10.04_amd64.deb«.
unser Paket einspielen
> dpkg -i lighttpd-1.4.33+openssl-1.0.1e_ubuntu-10.04_amd64.deb
Wähle vormals abgewähltes Paket lighttpd+openssl.
(Lese Datenbank ... 74826 Dateien und Verzeichnisse sind derzeit installiert.)
Entpacke lighttpd+openssl (aus lighttpd-1.4.33+openssl-1.0.1e_ubuntu-10.04_amd64.deb) ...
* Stopping web server lighttpd [ OK ]
Richte lighttpd+openssl ein (1.4.33+1.0.1e) ...
Syntax OK
* Stopping web server lighttpd [ OK ]
Syntax OK
2013-11-26 13:15:18: (log.c.166) server started
[ OK ]
Verarbeite Trigger für ureadahead ... Verarbeite Trigger für man-db ...
unser Paket entfernen
> dpkg -r lighttpd+openssl (Lese Datenbank ... 76260 Dateien und Verzeichnisse sind derzeit installiert.) Entferne lighttpd+openssl ... * Stopping web server lighttpd [ OK ] Verarbeite Trigger für ureadahead ... Verarbeite Trigger für man-db ...
HTTPS-Verbindung prüfen
> openssl s_client -connect mein.webserver.de:https
