Home ORDIX AG             Dienstleistung             Trainingsshop    Kunden / Referenzen Aktuelles    Kontakt
Home  Pfeil  ORDIX News  Pfeil  3/2002
suche: 

ORDIX News Archiv

Das IT-Magazin der ORDIX AG mit Fachbeiträgen zu Datenbanken, Unix und Java/XML.

Apache-Tuning mittels Crypto-Karten

Während bei einer privaten Homepage die Performance bei den Seitenzugriffen aus dem Internet eine eher untergeordnete Rolle spielt, stellt sich die Situation bei Internet-Verkaufsportalen deutlich anders dar. Hier ist es von entscheidender Bedeutung, dass der Kunde schnell bedient werden kann. Ein ebenso wichtiger Aspekt ist aber auch die Verschlüsselung des Datenverkehrs. Sensible Daten wie z. B. Kredikartennummern dürfen nicht unverschlüsselt über das Netz transportiert werden.

Dieser Verschlüsselungs-Dienst setzt aufgrund der eingesetzten Verfahren eine hohe Rechenleistung voraus. Am zeitaufwendigsten bei der Verschlüsselung ist die Handshake-Phase, bei der die Schlüssel für die Verbindung ausgetauscht werden. Mit Performance-Verlust gegenüber unverschlüsseltem Netzverkehr ist also zu rechnen. Dies hat sich auch bei Messungen eines von ORDIX mitbetreuten Verkaufsportals bestätigt: Ab circa hundert gleichzeitigen Benutzerzugriffen mit SSL-Verschlüsselungen konnten die Zugriffszeiten für eine Kommunikation mit dem Kunden als inakzeptabel bezeichnet werden.

Da das Rechenverfahren immer gleich ist, liegt der Gedanke nahe, diese Berechnungen mit einer speziell für diese Aufgabe gebauten CPU erledigen zu lassen, anstatt eine normale CPU zu verwenden.

Um dieses Problem zu lösen, können Crypto-Karten (Hardware) eingesetzt werden, die die zusätzliche Rechenleistung für die Verschlüsselung zur Verfügung stellen. Dieser Artikel beschreibt, wie ein Webserver durch den Einsatz von Crypto-Karten bei Secure Socket Layer (SSL)-Transaktionen beschleunigt werden kann. Als Beispiel dient ein Apache-Webserver in der Version 1.3.20, der auf einem Solaris 8-Betriebssystem betrieben wird. Als Crypto-Karten werden die von SUN vertriebenen SUN Crypto Accelerator I Boards eingesetzt.

Diese Karte ist baugleich mit der von der Firma Rainbow (Type CS-200) hergestellten Crypto-Karte.

Dadurch ergibt sich für den Käufer ein Problem: SUN hat einige Software-Komponenten umbenannt, bzw. in andere Verzeichnisse verschoben. Nach Aussagen von SUN sollte die Karte mit Apache laufen und es steht auch ein Patch für Apache bereit. Leider wird Apache jedoch nicht vom SUN Support unterstützt - im Gegensatz zum iPlanet-Webserver. Wirklich ärgerlich wird die Sache dann, wenn man feststellt, dass der SUN-Patch für die uralte Openssl-Version 0.9.4 gedacht ist. Diese Version hat leider das Problem, dass sie nicht mit den heute oft verwendeten Super-SSL Zertifikaten zusammenarbeitet. Somit ist also eigene Forschungsarbeit angesagt. Im Folgenden wird gezeigt, wie es doch funktioniert.

Voraussetzungen

Für den Betrieb der Crypto-Karten hat sich folgende Software bewährt:

Bei Openssl ist es wichtig, diese engine-Version einzusetzen. Nur diese unterstützt Crypto-Karten!

Da die oben beschriebene Software nicht in Binärform, sondern als C-Quellen ausgeliefert wird, müssen diese vor der Installation übersetzt werden. Um das Ganze zusammenzubauen, wird jetzt also noch ein C-Compiler benötigt.

Installationsschritte

  1. Vorarbeiten: Installation der Crypto-Karten-Treiber von SUN.
  2. Wer die Karten unabhängig vom Webserver zunächst auf korrekte Funktion testen will, kann das Testprogramm SunVTS verwenden. Sollte die Karte von SunVTS nicht erkannt werden, deutet das nicht unbedingt auf einen Defekt der Karte hin. Durch die Installation der aktuellen Solaris-Patches lässt sich das Problem sofort beheben.
  3. Zuerst werden die Quellen mit einem C-Compiler übersetzt. Dabei muss in folgender Reihenfolge vorgegangen werden:
    1. Openssl: Wie oben bereits erwähnt, ist die engine-Version 0.9.6b hier zwingend notwendig.
    2. Modssl: Zum Apache 1.3.20 passt die Version 2.8.4. Beim Übersetzen von Modssl muss die Option
    3. -enable-rule=SSL_EXPERIMENTAL angegeben werden. Danach sollten bei der Ausgabe des configure die in Abb. 1 aufgeführten Zeilen erscheinen.
    4. Apache: In dem Makefile muss die Zeile EXTRA_LIBS um den Eintrag -ldl erweitert werden.
  4. Auf dem Rechner muss anschließend die Hardwareverschlüsselung in der SSL-Konfiguration für die Crypto-Karte aktiviert werden. Hierzu ist die Datei httpd.conf um den Eintrag „SSLCryptoDevice cswift" zu erweitern. Wird dies nicht gemacht, so gibt es zwar auch eine SSL-Verschlüsselung, aber diese wird dann softwaretechnisch realisiert und nicht mit Hilfe der neuen Karte. Dieses „Feature" ist recht nützlich, wenn in der Webserverfarm Rechner mit und ohne Crypto-Karten stehen. Dann können alle Rechner mit dem gleichen Binary (httpd) betrieben werden und nur die Konfiguration entscheidet, wie verschlüsselt wird.

    + SSL interface: mod_ssl/2.8.4
    + SSL interface experimental code: enabled
    + SSL library version: OpenSSL 0.9.6b [engine] 9 Jul 2001
    Abb.1: Ausgaben von "make" beim Übersetzen des Apache.

Los geht's

Beim Starten von Apache Servern erscheint folgendes im error.log [error] mod_ssl: Init: Failed to enable Crypto Device API `cswift'

Das hängt damit zusammen, dass SUN die Shared-Libs, die Rainbow unter /usr/lib ausliefert und welche somit im Pfad sind, leider in ein anderes Verzeichnis installiert hat, ohne dies irgendwo zu dokumentieren. Damit liegen die zwingend benötigten Programmteile in einem von der Software nicht durchsuchten Pfad. Ist dieses Problem behoben (z. B. durch einen symbolischen Link: ln _s /opt/SUNWconn/sunsecure/lib/libswift.so.5.2.2 /usr/lib/libswift.so), fährt der Apache Server ohne Fehler

http://www.rainbow.com Hersteller von Crypto-Karten
http://wp.netscape.com/eng/ssl3/ SSL-Spezifikation
http://www.james.rcpt.to/2001/sun-crypto/ Beschreibung, wie man die Karte ans Laufen bekommt
http://www.sunfreeware.com Softwarearchiv für Solaris
http://www.apache.org Webseite des Apache-Projektes
http://www.modssl.org Webseite des modssl-Projektes
http://www.openssl.org Webseite des openssl-Projektes
Abb.2: Liste der Referenzen.

Durch den Einsatz von SUN Crypto-Karten wird die SSL-Verschlüsselung um Faktor fünf beschleunigt. Wenn man die Preise von Netra und die der Crypto-Karte berücksichtigt, ist dies eine durchaus lohnende Investition.

Michael Güting (info@ordix.de).