SSL/TLS-Netzwerkprogrammierung mit Boost.Asio, Teil 1: Grundlagen

Seite 5: Build-Prozess

Inhaltsverzeichnis

In der POSIX-Welt können Entwickler den Build-Prozess von WOPR für configure konfigurieren. Das funktioniert auf Unix/Linux-Systemen, OS X und auf Windows mit Cygwin. Das Entpacken des WOPR-Tarball wopr-3.0.tar.bz2 erfolgt mit

tar xjf wopr-3.00.tar.bz2

Nach dem Wechsel in das neu entstandene Verzeichnis mit

cd wopr-3.00

genügt ein

./configure

und ein anschließendes

make

für den Build von WOPR.

Zumeist lässt sich auch ein älterer gcc, der die Option --std=c++11 nicht unterstützt, über die Option --enable-legacy-gcc zur Zusammenarbeit bewegen: ./configure --enable-legacy-gcc

Zusätzlich lässt das configure-Script auch die Optionen --with-openssl und --with-boost zu, um damit ein Verzeichnis anzugeben, in dem OpenSSL beziehungsweise Boost bereitgestellt sind -- beispielsweise mittels ./configure --with-boost=/opt/boost-1.58

Eine Installation der Beispielprogramme per make install ist in der Regel nicht notwendig. Der WOPR-Server wopr findet sich nach dem Build im gleichnamigen Verzeichnis. Das asynchrone Terminal-Programm findet sich als terminal und das synchrone als sterminal im Unterverzeichnis terminal. Wer es dennoch installieren will, sollte bei configure über die Option --prefix ein Zielverzeichnis angeben. Andernfalls erfolgt die Installation nach /usr/local.

Einen Beispielschlüssel und ein -zertifikat im Verzeichnis wopr erzeugt ein Aufruf von make server.crt. Daraufhin liegen dort für den Start von WOPR, aber auch für das Terminal (Option -c) server.key und server.crt bereit.

Windows-Entwickler können neben dem zuvor beschriebenen configure-Prozess unter Cygwin WOPR auch mit Visual Studio kompilieren. Dazu entpacken sie den WOPR-Tarball wopr-3.0.tar.bz2 mit WinZIP oder 7-Zip. In dem neu entstandenen Verzeichnis wopr-3.00 befindet sich im Unterverzeichnis vs2013 eine Solution für Visual Studio 2013 und in vs2015 eine für Visual Studio 2015.

Den Build-Prozess von WOPR steuert ein Eigenschaftsblatt, das in der Datei vs2013\ConfigSheet.props beziehungsweise vs2015\ConfigSheet.props hinterlegt ist. Entwickler können es sowohl mit einem Texteditor als auch mit dem Property Manager von Visual Studio bearbeiten.

Diese Nutzermakros steuern den Build-Prozess in Visual Studio 2013 und 2015 (Abb. 2)

Alle Konfigurationen für alle Plattformen binden dasselbe Eigenschaftenblatt ein. Sofern die oben genannten Distributionen von OpenSSL und Boost installiert sind, erfordern lediglich vier Makros eine Anpassung:

  • BoostVersion erfordert erwartungsgemäß die Version von Boost – mit Unterstrichen statt Punkten, also beispielsweise 1_58 für Boost 1.58.
  • BoostRootPath erwartet das Wurzelverzeichnis der Boost-Installation. Der Bezug auf die Version erfolgt durch $(BoostVersion).
  • OpenSSLPath gibt das Wurzelverzeichnis für 32-Bit-OpenSSL an.
  • OpenSSLPath64 gibt das Wurzelverzeichnis der 64-Bit-Variante von OpenSSL an.

Nach dem Anpassen ist der Bau von WOPR für Win32 und/oder x64 möglich. Die 64-Bit-Programme befinden sich in wopr-3.00\vs2013\x64\Release beziehungsweise wopr-3.00\vs2013\x64\Debug, die 32-Bit-Programme in wopr-3.00\vs2013\Release beziehungsweise wopr-3.00\vs2013\Debug. Für Visual Studio 2015 befinden sich die Pfade entsprechend in wopr-3.00\vs2015. Der Server hört auf den Namen wopr.exe, das synchrone Terminal auf sterminal.exe. Ein asynchrones Terminal ist infolge mangelnder POSIX-Unterstützung nicht verfügbar.

Ein Beispielschlüssel samt X.509-Zertifikat erstellen Entwickler mit dem PowerShell-Script Create-Server-Certificate.ps1. Dazu öffnen sie eine PowerShell und wechseln mit cd in das Verzeichnis wopr-3.00\Windows. Dort können sie eine Online-Hilfe für das Script mit

help .\Create-Server-Certificate.ps1

aufrufen. Das Script erwartet openssl.exe im Pfad der PATH-Variablen. Alternativ muss der vollständige Pfad des Programms in der Option -openssl angegeben sein.

Der nächste Teil des Artikels widmet sich dem WOPR-Server und dessen Programmierung. Dazu gehört eine Einführung in die Nebenläufigkeit und ein Blick auf die Plattformunabhängigkeit von Boost.

Oliver Müller
ist freiberuflicher IT-Berater und -Trainer mit den Schwerpunkten Software Engineering und Kryptographie. Er berät zu Java EE, Unix/Linux, Android und Mainframe-Systemen.
(rme)