PKI System mit OpenCA

Dieser Blogeintrag beschäftigt sich mit der Installation und Einrichtung von OpenCA unter Linux, hier ubuntu-9.10-server-x86, im Zuge eines Praxisprojekts im Fach "Cross Plattform Authentifizierung I".

Als Serversystem kommt hier Ubuntu 9.10 Server 32Bit zum Einsatz.

Bitte beachtet, dass ich diese Ausarbeitung bereits vor mehreren Monaten erstellt habe und ich mich erst jetzt dazu entschieden habe, diese zu veröffentlichen. Es können also Abweichungen in den Versionen der verwendeten Software auftreten und Befehle könne sich also auch geändert haben!

Installation
OpenCA läuft unter allen gängigen Linux und UNIX Distributionen unter Voraussetzung, dass diese 32 Bit und nicht 64 Bit sind. Unter 64 Bit Distributionen haben wir vergebens versucht, OpenCA zum Laufen zu bekommen! Weitere benötigte Software ist:

  • OpenCA PKI
  • OpenCA Tools
  • Apache + PHP + SSL
  • OpenSSL
  • Perl
  • MySQL
  • OpenLDAP (wird hier nicht weiter drauf eingegangen, da dies von einer anderen Gruppe behandelt wird!)
  • Optional: ggc und ggc++, wenn OpenCA von Source aus aufgesetzt werden soll (wir haben uns für die fertigen Binarys entschieden)

Wir richten uns zuerst einen Ubuntu 9.10 32 Bit Server ein und installieren die
benötigte Software.
Mit „sudo su“ können wir uns die widerholte Passworteingabe ersparen undagieren immer als Root/Admin.

apt-get install openssl

sudo apt-get install apache2 php5-mysql libapache2-mod-php5 mysqlserver

wget http://downloads.sourceforge.net/project/openca/opencatools/v1.3.0/binaries/linux/Ubuntu9.10/openca-tools-1.3.0-linux-Ubuntu-9.10.bin

wget http://downloads.sourceforge.net/project/openca/opencabase/releases/v1.1.0/binaries/linu/Ubuntu9.10/openca-base-1.1.0-linux-Ubuntu-9.10.x86.bin

Um die mit „wget“ heruntergeladenen Programme installieren zu können, müssen wir diese erst einmal ausführbar machen.

chmod a+x openca-tools-1.3.0-linux-Ubuntu-9.10.bin

chmod a+x openca-base-1.1.0-linux-Ubuntu-9.10.x86.bin

Da OpenCA die OpenCA Tools benötigt, müssen wir diese vor OpenCA installieren.

./openca-tools-1.3.0-linux-Ubuntu-9.10.bin

Die Tools können ohne Probleme in den Standardpfad installiert werden. Nach einer erfolgreichen Installation kann nun endlich OpenCA installiert werden.

./openca-base-1.1.0-linux-Ubuntu-9.10.x86.bin

OpenCA wird standardgemäß in das Verzeichnis „/opt/openca/“, die Web-Anwendung wird nach „/var/www“ und die Konfigurationsdateien nach „/opt/openca/etc/openca/“ installiert.

Konfiguration
Um OpenCA auf unserem System lauffähig zu bekommen, müssen wir jedoch weitere Einstellungen vornehmen. Hierfür müssen wir erst einmal unseren MySQL-Server einrichten. Normalerweise wird man bei der MySQL Installation zur Eingabe eines Passworts aufgefordert. Sollten wir keins gewählt haben oder das ausgewählte Passwort vergessen haben, so können wir mit folgenden Befehlen ein neues Rootpasswort festlegen.

/etc/init.d/mysql stop

mysqld --user=mysql --skip-networking --skip-grant-tables --datadir=/var/lib/mysql &

mysql mysql -u root

update user set password=password("MeinPasswort") where user="root";

Strg + c

/etc/init.d/mysql stop

/etc/init.d/mysql start

Um eine neue Datenbank und einen neuen Datenbank Nutzer anlegen zu können, müssen wir uns zuerst an unserem MySQL-Server anmelden. Dies können wir mit „mysql -u root -p -h localhost“ erledigen. Mit „create database openca;“ legen wir die „openca“ Datenbank an und mit „use openca;“ teilen wir unserem MySQL-Server mit, dass dieser doch bitte unsere neuangelegte Datenbank benutzen soll.

Da wir nicht wollen, dass OpenCA mit unserem Admin-Account agiert, legen wir einen neuen Account an und geben ihm sämtliche Rechte. Dies erledigen wir mit „grant all privileges on *.* to 'openca'@'localhost' identified by 'MeinPasswort';“.

Mit „Strg + c“ können wir uns nun wieder vom MySQL-Server abmelden und uns zur Kontrolle mit dem zuvor erstellen openca Account anmelden („mysql -u openca -p -h localhost openca“).

Sind nun alle Vorkehrungen für den MySQL-Server getroffen, können wir diese nun OpenCA mitteilen. Mit „nano /opt/openca/etc/openca/config.xml“ öffnen wir die OpenCA Konfigurationsdatei im „Nano Editor“. Nun durchsuchen wir die config.xml nach den MySQL Einstellungen und tragen unsere Daten ein. Mit „Strg + o“ können wir die config.xml speichern und mit „Strg + x“ wieder schließen. Sind alle Einstellungen in der config.xml abgeschlossen, müssen wir noch das „configure_etc.sh“ Skript ausführen, um die Einstellungen auf alle Templates anzuwenden bzw. aus den Templates die benötigten Dateien erstellen zu lassen. Die configure_etc.sh befindet sich im Ordner „/opt/openca/etc/openca/“ und lässt sich wie gewöhnlich per ./filename ausführen.

Um zu überprüfen ob OpenCA funktioniert und genügend Rechte besitzt, müssen wir unseren Server neustarten. Ein einfaches Starten des OpenCA Dienstes reicht hier leider nicht aus, da die Fehler nur während des Boot-Vorgangs angezeigt und später in der boot.log ausgegeben werden. Sollten beim Boot-Vorgang Zugriffsberechtigungsfehler auftreten, müssen wir die Zugriffsrechte der einzelnen Dateien ändern. Dies können wir mit dem „chown user /Pfad/*“ Befehl erledigen wobei wir user durch WWW-Data (ist der User unter dem OpenCA ausgeführt wird) und dem Pfad im boot.log ersetzen müssen.

Besitzt OpenCA nun alle benötigten Rechte und startet fehlerfrei, dann können wir versuchen auf das Webinterface zuzugreifen. Wir starten unseren Browser und versuchen auf http://serveradresse/html/pki/pub/index.html zu gelangen. Von hier aus sollten wir auf http://serveradresse/cgibin/pki/pub/pki?cmd=getStaticPage&name=homePage weitergeleitet werden, wo wir das User-Interface zu Gesicht bekommen. Sollten wir eine 404 Fehlerseite angezeigt bekommen, liegt es mit hoher Wahrscheinlichkeit daran, dass Apache intern auf ein anderes CGI-BIN Verzeichnis verweist, als das sich im www Verzeichnis sich befindliche. Ist dies der Fall, können wir einfach den Inhalt unseres CGI-BIN per „mv /var/www/cgi-bin/pki /usr/lib/cgi-bin/“ in das des Apaches kopieren.

Da so gut wie alle Module eine „sichere SSL Verbindung“ benötigen, müssen wir SSL in unserem Apache Webserver aktivieren. Dies können wir mit dem „a2enmod ssl“ Shell-Befehl durchführen. Jetzt müssen wir noch einen virtuellen Server anlegen, der auf Port 443 (für SSL) horcht und ein vorübergehendes RSA Zertifikat ausstellen, welches wir in unserem Apache einbinden müssen.

Um den Rahmen dieser Ausarbeitung nicht weiter zu sprengen, werde ich nicht weiter auf die Einzelheiten der SSL Konfiguration eingehen. Durch erneutes Aufrufen von https://serveradresse/html/pki (wichtig, das hier httpS und nicht http verwendet wird!) sollten wir nun auf alle Module unserer PKI zugreifen können. Zunächst müssen wir das CA Modul aufrufen und uns mit unseren Logindaten an der CA anmelden, die Datenbank initialisieren und weitere Einstellungen vornehmen. Dies erledigen wir über den Menüpunkt „PKI init & Config“. Ist die Initialisierung und Konfiguration abgeschlossen, ist unsere PKI einsatzbereit.

Fehler und Fehlerbehebung
Dieser Abschnitt befasst sich mit Fehlern und Problemen die uns bei der Installation und Inbetriebnahme aufgefallen sind und wie wir diese gelöst haben.

  • Keine Installation der Binarys, Installationspakete und Kompilierung der Source möglich
    • Nur 32Bit Distributionen werden unterstützt
  • OpenCA startet nicht
    • Überprüfen der Zugriffsrechte
    • Ändern der Zugriffrechte auf WWW-Data
  • 404 Fehlerseite beim redirect nach cgi-bin
    • Anpassung des cgi-bin Pfades
  • Kein Zugriff auf batch, ldap, node und ra
    • Diese Module benötigen eine sichere SSL Verbindung
    • SSL im Apache aktivieren
  • Kein Zugriff auf batch, ldap, node unf ra trotz SSL
    • Der Apache gibt keine Auskunft über die Zertifikatsdaten wie Stärke usw.
    • Einstellung im virtual Host unseres Apache ändern: SSLOptions +StdEnvVars +ExportCertData
  • Fehlendes Menü in den Modulen
    • Mangelnde Zugriffsrechte
      • Zugriffsrechte auf WWW-Data ändern
    • Fehlerhafte Pfade
      • Quellcode anzeigen lassen, den Eintrag suchen und testen ob der Pfad aus dem Browser erreichbar ist. Sollte dies nicht der Fall sein, den Pfad in der Config anpassen.
  • Änderungen an der OpenCA Konfiguration bzw. an den Templates werden nicht übernommen.
    • Alle Änderungen an den Templates und der OpenCA Konfiguration werden erst durch das ausführen des „configure_etc.sh“ Shell-Skriptes wirksam.

Stand: ca. Juni 2010


Neuen Kommentar schreiben

Plain text

  • Keine HTML-Tags erlaubt.
  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • HTML - Zeilenumbrüche und Absätze werden automatisch erzeugt.
By submitting this form, you accept the Mollom privacy policy.