2. Installation von OpenSSL-0.9.2b

OpenSSL ist eine frei verfügbare Implementierung des SSL/TLS-Protokolls und bietet zahlreiche Funktionen zur Zertifikat-Verwaltung sowie verschiedene kryptographische Funktionen. Es basiert auf dem SSLeay-Paket, das von Eric A. Young und Tim Hudson entwickelt wurde. OpenSSL wird derzeit von einer unabhängigen Gruppe weiterentwickelt.

Das Paket umfaßt mehrere einzelne Applikationen, z.B. zur Erzeugung von Zertifikaten, von Requests, zur Verschlüsselung usw. Es gibt zwei Möglichkeiten, das Paket zu kompilieren. Die erste Möglichkeit faßt die einzelnen Applikationenen zu einem monolithischen Programm zusammen, openssl. openssl wird dann mit dem Applikationsnamen als Parameter aufgerufen.

Die zweite Möglichkeit kompiliert die Applikationen als eigenständige Programme, es gibt kein monolithisches Programm.

Alle Angaben zur Übersetzung und Konfiguration des Paketes beziehen sich auf das Betriebssystem SunOS 5.5.1 (Solaris 2.5.1), den C-Compiler gcc-2.7.2.1 und OpenSSL-0.9.2b.

  2.1 Änderungen und Anpassungen am Paket

  2.1.1 Änderungen

In apps/ca.c

Wenn die ca-Applikation die Umgebungsvariable OPENSSL_CONF (früher SSLEAY_CONF) auswerten soll, muß die folgende Änderung in apps/ca.c ab Zeile 404 vorgenommen werden:

404     if (configfile == NULL)
405             {
406             /* We will just use 'buf[0]' as a temporary buffer.  */
            

ersetzen durch

 
404     if (configfile == NULL)
405       configfile = getenv( "OPENSSL_CONF" );
406     if (configfile == NULL)
407       {
408         /* We will just use 'buf[0]' as a temporary buffer.  */
            

  2.1.2 Anpassungen

Achtung:
Im Unterschied zum SSLeay-Paket müssen die folgenden Anpassungen nach der Konfiguration (siehe Übersetzung als Monolith bzw. Übersetzung als Programmsammlung) des Pakets erfolgen. Der Übersichtlichkeit wegen stehen die Anpassungen schon an dieser Stelle.

Das OpenSSL-Paket enthält eine Reihe von Perl-Skripten, für die der Pfad angepaßt werden kann. Das ist nicht unbedingt notwendig, da während der Kompilation sämtliche Skripte durch perl script.pl aufgerufen werden. Allerdings können im späteren Betrieb einige Skripte durch direkte Angabe des Skriptnamens gestartet werden, so daß das vorangestellte "perl" entfallen kann.

Die Pfad-Anpassung wird größtenteils durch ein Skript erledigt. Achtung, nur den Pfad angeben, z.B. /usr/bin wenn der Pfad /usr/bin/perl lautet:

perl util/perlpath.pl /neuer/pfad

In zwei Skripten muß der Pfad von Hand geändert werden:

Um den auf /usr/local/ssl voreingestellten Installationspfad zu ändern, müssen die Pfadangaben in einigen Dateien geändert werden. Auch wenn nicht mit make install installiert wird, müssen die Pfadangaben angepaßt werden, weil sonst möglicherweise Pfade einkompiliert werden, die nicht gewollt sind. Die Pfadanpassungen erfolgen am einfachsten mit folgendem Befehl:

perl util/ssldir.pl /new/ssl/home

Alternativ kann die Anpassung von Hand erfolgen:

  2.2 Übersetzung und Installation als Monolith

Mit

perl Configure solaris-sparc-gcc

wird das Paket für die Übersetzung konfiguriert. Alternativ dazu bietet sich die Möglichkeit einer automatischen Erkennung mit dem Befehl

sh config

Nach Abschluß der Konfiguration wird ein Hinweis ausgegeben, daß das OpenSSL-Programm (noch) nicht verfügbar ist:

c_rehash: rehashing skipped ('openssl' program not available)

Das liegt daran, daß das Konfigurations-Skript versucht Hash-Links auf einige Zertifikate zu setzen, wozu das Programm openssl (welches ja erst noch kompiliert werden soll) benötigt wird. Nachdem das Programm übersetzt wurde, kann dieser Vorgang mit dem untenstehenden Befehl ("make rehash") nachgeholt werden.

Achtung:
Bevor folgende Schritte durchgeführt werden, sollten jetzt die unter Anpassungen aufgeführten Änderungen vorgenommen werden.

Mit

make clean ; make errors ; make

wird das Paket übersetzt. Durch make errors wird numerischen Fehlercodes ein kurzer, beschreibenender Fehlertext zugeordnet. Nun sollte noch

make rehash ; make test

aufgerufen werden. Durch das erste Kommando make rehash werden die oben erwähnten Hash-Werte in einem Demo-Verzeichnis wiederhergestellt, welche für den folgenden Testlauf gebraucht werden. Mit make test werden umfangreiche Tests des Paketes durchgeführt. Erfolgte der Testlauf im Sinne der Tests fehlerfrei, kommt abschließend eine Meldung ähnlich der folgenden:

OpenSSL 0.9.2b 22 Mar 1999
built on: Thu Apr  8 12:26:12 MET DST 1999
platform: solaris-sparc-gcc
options:  bn(64,32) md2(int) rc4(ptr,char) des(idx,cisc,16,long) idea(int) blowfish(ptr) 
compiler: gcc -O3 -fomit-frame-pointer -mv8 -Wall -DB_ENDIAN
`test' is up to date.
          

Die Installation erfolgt durch das Kommando

make install

Achtung:
In $(SSLDIR) muß noch das Verzeichnis newcerts angelegt werden. Der install-Befehl erzeugt es nicht. Das Verzeichnis wird aber von der Default-Konfigurationsdatei openssl.cnf (s.u.) verlangt, um dort die erzeugten Zertifikate abzulegen.

Wer etwas mehr Kontrolle über die Installation haben will, kann sich an folgendes Verfahren halten:

Für die Installation muß zunächst ein Zielverzeichnis erzeugt werden, in dem Programme, Bibliotheken usw. installiert werden können. Der Pfad dieses Verzeichnisses sollte günstigerweise mit dem vor der Kompilierung angegebenen übereinstimmen. In diesem Verzeichnis werden dann die Verzeichnisse bin, crl, certs, lib, newcerts, private erzeugt. Bei Bedarf kann auch noch ein Verzeichnis include erzeugt werden, in das dann die Header-Dateien der OpenSSL-Bibliotheken kopiert werden. Das ist sinnvoll, wenn die ergänzenden Programme von Steve Henson (siehe pfx und pkcs12) eingesetzt bzw. kompiliert werden sollen. Anschließend werden die Dateien kopiert (im folgenden $(SSLDIR) = Installationspfad von OpenSSL):

Jetzt muß noch eine Datei angelegt werden, die die aktuelle Seriennummer des herauszugebenden Zertifikats in hexadezimaler Form enthält:

echo "01" > $(SSLDIR)/serial

Dann muß noch eine Indexdatei für die erzeugten Zertifikate angelegt werden:

touch $(SSLDIR)/index.txt

Die beiden Dateien serial und index.txt werden nach jeder erfolgreichen Zertifizierung eines Requests durch das Programm ca geändert, d.h. die Seriennummer in serial wird um den Wert eins erhöht, und in index.txt wird das herausgegebene Zertifikat registriert (siehe index.txt).

Es ist wichtig, daß die OpenSSL-Konfigurationsdatei $(SSL_DIR)/lib/openssl.cnf vor dem Benutzen der OpenSSL-Applikationen durchgesehen und den Erfordernissen angepaßt wird. Siehe Beispiel im Anhang opsenssl.cnf.

  2.3 Übersetzung und Installation als Programmsammlung

Mit

perl Configure solaris-sparc-gcc

wird das Paket für die Übersetzung konfiguriert. Alternativ dazu bietet sich die Möglichkeit einer automatischen Erkennung mit dem Befehl

sh config

Nach Abschluß der Konfiguration wird ein Hinweis ausgegeben, daß das OpenSSL-Programm (noch) nicht verfügbar ist:

c_rehash: rehashing skipped ('openssl' program not available)

Das liegt daran, daß das Konfigurations-Skript versucht, Hash-Links auf einige Zertifikate zu setzen, wozu das Programm openssl (welches ja erst noch kompiliert werden soll) benötigt wird. Nachdem das Programm übersetzt wurde, kann dieser Vorgang mit untenstehenden Befehl ("make rehash") nachgeholt werden.

Achtung:
Bevor folgende Schritte durchgeführt werden, sollten jetzt die unter Anpassungen aufgeführten Änderungen vorgenommen werden.

Mit

make clean ; make errors ; make

wird das Paket übersetzt. Durch make errors wird numerischen Fehlercodes ein kurzer, den Fehler beschreibenden, Fehlertext zugeordnet. Nun sollte noch

make rehash ; make test

aufgerufen werden. Durch das erste Kommando make rehash werden die oben erwähnten Hash-Werte in einem Demo-Verzeichnis wiederhergestellt, welche für den folgenden Testlauf gebraucht werden. Mit make test werden umfangreiche Tests des Paketes durchgeführt. Erfolgte der Testlauf im Sinne der Tests fehlerfrei, kommt abschließend eine Meldung ähnlich der folgenden:

OpenSSL 0.9.2b 22 Mar 1999
built on: Thu Apr  8 12:26:12 MET DST 1999
platform: solaris-sparc-gcc
options:  bn(64,32) md2(int) rc4(ptr,char) des(idx,cisc,16,long) idea(int) blowfish(ptr) 
compiler: gcc -O3 -fomit-frame-pointer -mv8 -Wall -DB_ENDIAN
`test' is up to date.
          

Jetzt ist das komplette Paket übersetzt; die Übersetzung diente aber nur dazu, die Bibliotheken libssl.a und libcrypto.a im Quellverzeichnis zu erzeugen. Die einzelnen Applikationen werden am einfachsten mit folgendem Shell-Skript im Quell-Verzeichnis übersetzt:

#!/bin/sh -x
for i in asn1pars ca ciphers crl crl2p7 dgst dh dsa dsaparam enc errstr gendh \
         gendsa genrsa nseq pkcs7 req rsa sess_id speed verify version x509
do
 gcc -Icrypto -Iinclude -fomit-frame-pointer -mv8 -Wall -o out/$i \
      apps/$i.c apps/apps.c libssl.a libcrypto.a
done
          

Zwei Applikationen sind noch aus Kompatibilitätsgründen mit der OpenSSL-Installation als Monolith umzubenennen:

Für die folgenden Applikationen war die Übersetzung mit dieser Methode nicht erfolgreich:

s_client, s_server, s_time

Eine Beschreibung der Funktion der einzelnen Applikationen findet sich im Anhang OpenSSL-Parameter.

Für die Installation muß zunächst ein Zielverzeichnis erzeugt werden, in dem Programme, Bibliotheken usw. installiert werden können. Der Pfad dieses Verzeichnisses sollte günstigerweise mit dem vor der Kompilierung angegebenen übereinstimmen. In diesem Verzeichnis werden dann die Verzeichnisse bin, crl, certs, lib, newcerts, private erzeugt.

Bei Bedarf kann auch noch ein Verzeichnis include erzeugt werden, in das dann die Header-Dateien der OpenSSL-Bibliotheken kopiert werden. Das ist sinnvoll, wenn die ergänzenden Programme von Steve Henson (siehe pfx und pkcs12) eingesetzt bzw. kompiliert werden. Anschließend werden die Dateien kopiert (im folgenden $(SSLDIR) = Installationspfad von OpenSSL):

Jetzt muß noch eine Datei angelegt werden, die die aktuelle Seriennummer des herauszugebenden Zertifikats in hexadezimaler Form enthält:

echo "01" > $(SSLDIR)/serial

Dann muß noch eine Indexdatei für die erzeugten Zertifikate angelegt werden:

touch $(SSLDIR)/index.txt

Die beiden Dateien serial und index.txt werden nach jeder erfolgreichen Zertifizierung eines Requests durch das Programm ca geändert, d.h. die Seriennummer in serial wird um eins erhöht und das herausgegebene Zertifikat wird in index.txt registriert (siehe index.txt).

Es ist wichtig, daß die OpenSSL-Konfigurationsdatei $(SSL_DIR)/lib/openssl.cnf vor dem Benutzen der OpenSSL-Applikationen durchgesehen und den Erfordernissen angepaßt wird. Siehe Beispiel im Anhang openssl.cnf.


Copyright © 1996 - 2000 by DFN-PCA / certify@pca.dfn.de