In diesem Beitrag geht es nicht um die Installation von Wampserver, auch nicht um das Prozedere bei dessen Updates oder das Hinzufügen von aktuelleren PHP- Apache- MySQL und Mariadb-Versionen. Es geht auch nicht um das Aufsetzen von Virtual Hosts. Hierfür gibt es im Netz genügend Anleitungen, auch das Hilfeforum von Wampserver selbst bietet gute Anleitungen. Das Wissen um das oben erwähnte wird vorausgesetzt.
Ich entwickle meine Seiten gerne lokal, früher habe ich dazu einen passenden XAMPP installiert. Aber irgendwann war ich unzufrieden mit den Restriktionen, die XAMPP mitbringt, und schliesslich habe ich Wampserver entdeckt, den ich nun seit der Version 2-Punkt-irgendwas nutze
Ja, ich weiss, es gibt noch andere Produkte, aber was man kennt und schätzen gelernt hat, gibt man nicht so schnell auf.
Eine Sache, die mich bei diesem Server immer gestört hat, ist das Problem SSL. Nicht nur, weil es schick wäre, die Seiten schon während des Entwickelns mit einem SSL-Zertifikat laufen zu lassen - nach dem Going-Public baucht man ja eh ein Zertifikat - sondern auch weil es ja Dinge gibt, die einem verschlossen bleiben ohne SSL-Verbindung. Oder Probleme, die einem erst ins Auge springen, wenn die Seite schliesslich bei einem Provider liegt. Als Beispiel mag die passwortlose Anmeldung in Joomla gelten.
Wampserver ist ein lokaler Webserver für Windows. Die Software bringt einen Apache-Server, MySQL und MariaDB, diverse PHP Versionen und PhpMyAdmin und weitere Module mit. Das Produkt hat nicht nur den Vorteil, dass es kostenlos ist, es wird auch ständig weiterentwickelt und mit neuen Funktionen versehen. Die Installation ist nicht viel komplizierter als die eines XAMPP, es gilt allerdings, eine gewisse Lernkurve zu bewältigen, zumindest dann, wenn man Spass mit dem Server haben will. PHP-, Apache-, SQL- und MariaDB Versionen können ganz einfach hinzuinstalliert werden, nicht meht benötigte Versionen lassen sich geräuschlos wieder entfernen. Auch das Updaten des Servers selbst geht, ohne dass man die gesamte Installation neu machen muss. Allerdings ist man auf die jeweils aktuellen VC Redistributables von Microsoft angewiesen, die werden aber auf der Downloadseite von Wampserver ebenfalls angeboten. Der Software ist in aktuellen Versionen ausschliesslich in 64-bit erhältlich.
Item: Es gibt im Forum von Wampserver zwar Anleitungen, wie man dem Server SSL beibringen kann, leider sind diese Anleitungen aber nicht aktuell und zudem reichlich kompliziert verfasst und man ist nie sicher, was nun für welche Version des Servers gilt. Jedenfalls habe ich mit Hilfe der vorgeschlagenen Rezepte SSL nie vernünftig konfigurieren können. Vor Kurzem habe ich bemerkt, dass in den letzten Versionen von Wampserver einige Verbesserungen eingeflossen sind, sodass es jetzt relativ einfach ist, eine funktionierende Zertifikatskette herzustellen.
Vorbereitungen
Zuerst sollte die Software auf den aktuellen Stand gebracht werden. Zur Zeit, als dieser Artikel entstand war das Wampserver 3.3.6 (64 Bit) und der Tray Menu Manager (Wampserver.exe) 3.2.6.7 (64 Bit). Zudem müssen die letzten Versionen vom Microsofts C++ Runtime Libraries installiert sein, und zwar (wieso auch immer) sowohl in der 32-bit, als auch in der 64-bit Version. Das waren aktuell die Versionen VC17 - 14.40.33816. Die Pakete können hier heruntergeladen werden. Bei dieser Gelegenheit empfiehlt es sich auch, die PHP-, Apache-, MySQL- bzw. MariaDB- Versionen zu aktualisieren.
Bearbeiten der Apache Konfiguration
Zuerst müssen wir nun dafür sorgen, dass der Apacheserver in der Lage ist, SSL zu verstehen. Dazu muss er mit einer weiteren Konfigurationsdatei bekannt gemacht werden, nämlich jener Datei, die die gesamte SSL-Konfiguration enthält. Bei gestopptem Server laden wir also die Haupkonfigurationsdatei des Apache. Sie liegt unter [LW]/wamp64/bin/apache[version]/conf/httpd.conf - wobei [LW] durch das Laufwerk mit dem Wampserver und [version] durch die Apache-Version (z.B. apache2.4.58) zu ersetzen sind.
Wir suchen die Zeile #Include conf/extra/httpd-ssl.conf Die Raute (#) am Anfang der Zeile steht für einen Kommentar. Wir entfernen das #, dadurch wird die Anweisung aktiv, und der Server lädt die ssl.conf Datei.Bearbeiten der Apache-SSL Konfiguration.
Als Nächstes öffnen wir die SSL Konfigurationsdatei. Sie liegt unter [LW]/wamp64/bin/apache[version]/conf/extra/httpd-ssl.conf . Wir ersetzen den gesamten Inhalt dieser Datei durch folgendes:
## BEGIN OF SSL VIRTUAL HOSTS CONTEXT
Define SERVERNAMEVHOSTSSL joomla5.loc
Define DOCUMENTROOTVHOSTSSL w:/wamp64/www/joomlamuster5.loc
<VirtualHost *:443>
ServerName ${SERVERNAMEVHOSTSSL}
DocumentRoot "${DOCUMENTROOTVHOSTSSL}"
SSLEngine on
SSLCertificateFile "${CERTIFICATS}/${SERVERNAMEVHOSTSSL}-certonly.pem"
SSLCertificateKeyFile "${CERTIFICATS}/${SERVERNAMEVHOSTSSL}-privatekey.pem"
<Directory "${DOCUMENTROOTVHOSTSSL}/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride all
Require local
</Directory>
CustomLog "${INSTALL_DIR}/logs/custom.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
## END OF this SSL VIRTUAL HOSTS CONTEXT
Die Zeilen ab Nummer 30 bis zur Zeile # Do not remove these lines UnDefine enthalten die Virtual Host Konfigurationen für die vHosts mit SSL Zertifikat, und zwar pro Abschnitt für einen Host (Webseite). Um nicht Äpfel mit Birnen zu vermischen, ist der Ansatz der, dass die vHost Konfiguration vom Server in die Datei .../conf/extra/httpd-vhost.conf geschrieben wird, die dazugehörende SSL Konfiguration aber in die Datei .../conf/extra/httpd-ssl.conf. Leider muss letztere von Hand eingepflegt werden. Jeder Abschnitt für einen vHost fängt folglich mit Define SERVERNAMEHOSTSSL... an und endet mit </VirtualHost>. Dazu weiter unten im Abschnitt Die SSL-Konfiguration wird nachgetragen mehr.
Erstellen einer Certificate Authority
Nun sind wir soweit, dass der Server gestartet werden kann. Ist alles grün? Services laufen? Dann haben wir keinen Fehler gemacht und es kann losgehen.
Zunächst stellen wir sicher, dass wir mindestens eine Webseite haben, die als vHost konfiguriert ist.
Dann klicken wir mit der Rechten Maustaste auf das Wampserver-Symbol in der Infoleiste und wählen im sich öffnenden Fenster das Info-Symbol (über....).
Der Tray Menü Manager öffnet sich. Hier interessiert im Moment nur ein Tab, nämlich derjenige, welcher mit Self Signed beschriftet ist.
Der Tab wird gewählt, und wir sehen vier weitere Tabs.
Zunächst müssen wir nun eine Zertifikations-Autorität erstellen, das nennt sich CA und ist die Stelle, die Zertifikate ausstellen und signieren darf. Da wir unsere Zertifikate selbst unterzeichnen wollen, müssen wir also zunächst die Autorität dazu erschaffen. Als Erstes müssen wir Angaben zu unserer Autorität in ein Formular abfüllen. Dazu klicken wir auf den mit Properties an Certificate Authority beschrifteten Tab.
Die linke Seite des Formulars lassen wir so, wie sie ist, auf der rechten Seite sollen alle Felder ausgefüllt werden. Die maximale Gültigkeit des Zertifikats ist auf 999 Tage beschränkt, das wählen wir an. Jetzt wechseln wir zum Tab Certificate Domain Name:
Hier müssen wir unserem Stammzertifikat einen sinnvollen Namen vergeben, zudem müssen wir ein Passwort setzen, da wir ja einen privaten Schlüssel erzeugen müssen. Diesen Schlüssel samt Passwort brauchen wir später für jedes Webseiten-Zertifikat, das wir ausstellen wollen. Es empfiehlt sich also, dass wir uns das Passwort gut merken.
Jetzt geht es weiter im Tab Create and Save New Certificate:
Hier klicken wir auf Create CA Cert. Wenn wir soweit alles richtig gemacht haben, wird jetzt ein Stammzertifikat erstellt.
Alle von uns erstellten Zertifikate werden im Ordner .../wamp64/bin/certificates abgelegt.
Das erste Zertifikat wird erstellt
Jetzt ist es an der zeit, ein erstes Zertifikat zu erstellen. Wir wechseln dazu zurück in den Tab Certificate Domain Name:
Im Beispiel erstellen wir ein Zertifikat für eine Webseite namens joomla5.loc. Wir geben diesen Namen ein.
Prinzipiell wäre es in diesem Formular auch möglich, mittels sogenannten SANs Zertifikate für mehrere Webseiten zu erstellen. Leider werden solche Zertifikate aber nicht akzeptiert - wieso auch immer.
Wir wechseln in den Tab Create and Save New Certificate und müssen nun hier als Erstes unser Stamm(CA)-Zertifikat laden und das dazugehörige Passwort eingeben:
Das CA-Zertifikat wird gewählt, das Passwort eingegeben und mit Load CA Cert wird das Zertifikat geladen. Ein Klick auf Create SSL Cert erzeugt nun ein neues Zerifikat. Eine Bestätigungsmeldun schliesst den Prozess ab:
Die SSL Konfiguration wird nachgetragen
Wir haben nun zwar ein SSL Zertifikat für unsere joomla5.loc erstellt, leider weiss unser Server aber noch nicht, dass eine Verbindung per SSL zur Seite aufgebaut werden kann. Es fehlt noch einiges, bis wir zufrieden sein können.
Die SSL-Konfiguration muss nämlich noch händisch in die Datei ../conf/extra/httpd-ssl.conf eingetragen werden.
Dazu werden die Zeilen zwischen Nummer 30 bis zu ## Never modify these four lines durch den folgenden Inhalt ersetzt:
## BEGIN OF SSL VIRTUAL HOSTS CONTEXT
Define SERVERNAMEVHOSTSSL joomla5.loc
Define DOCUMENTROOTVHOSTSSL w:/wamp64/www/joomlamuster5.loc
<VirtualHost *:443>
ServerName ${SERVERNAMEVHOSTSSL}
DocumentRoot "${DOCUMENTROOTVHOSTSSL}"
SSLEngine on
SSLCertificateFile "${CERTIFICATS}/${SERVERNAMEVHOSTSSL}-certonly.pem"
SSLCertificateKeyFile "${CERTIFICATS}/${SERVERNAMEVHOSTSSL}-privatekey.pem"
<Directory "${DOCUMENTROOTVHOSTSSL}/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride all
Require local
</Directory>
CustomLog "${INSTALL_DIR}/logs/custom.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
## END OF this SSL VIRTUAL HOSTS CONTEXT
Für jedes Zertifikat, das wir erstellen, muss der entsprechende Eintrag in der ../conf/extra/httpd-ssl.conf nachgetragen werden, wie im Abschnitt Vorbereiten beschrieben: Der gesamte Abschnitt von Define SERVERNAMEHOSTSSL... bis zu </VirtualHost> muss mit den entsprechenden Namen zum vHost wiederholt werden.
Nochmals Apache Konfiguration
Die Zertifikate sind erzeugt worden, die SSL Konfiguration ist nachgetragen, aber etwas muss im Apache-Konfig-File ../apache/[version]/conf/httpd.conf noch kontrolliert, bzw. nachgetragen werden. Möglicherweise fehlen hier noch zwei wichtige LoadModule-Einträge, um den Server für SSL fit zu machen. Die entsprechenden Einträge befinden sich bei meiner httpd.conf so um Zeile 185. Auch hier ist die Raute am Anfang - sofern vorhanden - zu entfernen.
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule ssl_module modules/mod_ssl.so
Jetzt starten wir den Wampserver neu: Rechtsklick -> Restart from zero. Wenn der Server läuft, sollten wir folgendes unter vHosts sehen: Der vHost Name ist mit einem [HTTPS] verziert.
OK, das hat soweit geklappt. Server läuft, vHost meldet HTTPS. Tutti paletti, ja? - Leider nein!
Wir rufen nun unsere Webseite auf. Verwenden wir Firefox, sehen wir nun folgendes Bild:
Nicht wirklich prickelnd. Chrome zeigt ein ähnliches Bild mit einem roten doppelt durchgestrichenen https. Auch hässlich. Unser schönes Zertifikat wird nicht honoriert, weil der Herausgeber (das sind wir ja selber) nicht anerkannt wird. Unsere Zertifikate gelten nicht als vertrauenswürdig, der Browser hat von unserem Stammzertifikat noch nie etwas gehört. Neuere Browser verstehen hier keinen Spass, und lehnen folgerichtig das weitere Laden von solchen Seiten kategorisch ab. Zwar kann man nun auf Erweitert klicken und für die Seite eine Ausnahme hinzufügen, dann wird sie zwar geladen, aber trotzdem unschön als unsicher markiert. Das kann es noch nicht sein. Was nun?
Wir melden unsere CA beim Betriebssystem an
Nun gut, woher weiss der Browser eigentlich, welche Zertifikate vertrauenswürdig sind, und welche nicht? Hier gibt es zwei Ansätze:
- Die meisten Browser (Chrome, Edge, Opera etc.) trauen dem Zertifikatspeicher von Windows und akzeptieren alle Zertifikate, die von Windows als vertrauenswürdig angesehen werden
- Firefox, zumindetest in aktuellen Inkarnationen traut ohne weitere Eingriffe ausschliesslich seinem eigenen Zertifikatsspeicher. Das war früher anders, wurde aber irgendwann geändert.
Ergo könnte man doch das selbst gebastelte Stammzertifikat ins Betriebssystem importieren. Schauen wir noch einmal den Tray Menü Manager an:
Im Tab Create and Save New Certificate fallen unten 3 Schaltflächen auf. Wir betätigen die mittlere, die mit Manage Certificate LU beschriftet ist. Ein neues Fenster öffnet den Windows Zertifikats-Manager, wo wir auf der linken Seite zu Vertauenswürdige Stammzertifikate -> Zertifikate navigieren, und dann (immer noch links) mit der rechten Maustaste klicken, und schliesslich Alle Aufgaben -> Importieren wählen.
Ein Assistent öffnet sich. Wir klicken gleich auf weiter. Es wird nach einem Dateinamen gefragt. Wir klicken auf Durchsuchen und navigieren zum Verzeichnis mit unseren Zertifikaten ...wamp64/bin/certificats/ und wählen dort unser Stammzertifikat aus. es hat die Endung .pfx. Dann starten wir den Importvorgang. Ist der Vorgang abgeschlossen, finden wir unser Zertifikat im Speicher:
Unsere Browser sollten jetzt unsere selbst gebauten Zertifikate anerkennen, und zwar alle, die wir mit dem importierten Stammzertifikat erstellt haben - zumindest während der Gültigkeitsdauer dieses Zertifikats.
Und der Firefox?
Da der Firefox von Haus aus ausschliesslich seinem eigenen Zertifikatsspeicher vertraut, weiss dieser Browser noch nichts von unserer Aktion, akzeptiert also unsere Zertifikate nicht. Das lässt sich ab FF-Version 120 leicht ändern, es genügt dazu ein einziger Klick, unter Extras -> Einstellungen -> Datenschutz & Sicherheit scrollt man runter bis zum Abschnitt Sicherheit und klickt dort unter Zertifikate auf den Eintrag Firefox erlauben, Stammzertifikate von Drittanbietern, die Sie installieren, automatisch zu vertrauen.
Damit dürfte jetzt aber tutti paletti sein, alles funktioniert wie gewünscht.
Zusammenfassung
Wir haben in diesem Artikel gelernt, wie dem Wampserver der Umgang mit Zertifikaten beibringt, angefangen von der Konfiguration des Apache-Servers, der Erstellung einer eigenen Zertifikats-Autorität, der Herstellung von Zertifikaten für die lokalen Webseiten und schliesslich dem Import der eigenen CA in das Betriebssystem.
Wermutstropfen: Eine Schwäche von Wampserver soll nicht verschwiegen werden: Sind wir mit einem Projekt soweit fertig, dass wir es aufräumen wollen, muss leider alles von Hand entfernt werden. Klar, dass man die Datenbank und den Folder im /www - Verzeichnis von Hand entfernen muss - das geht ja noch. Aber während Wampserver zum Erstellen von vHosts ein schickes Interface anbietet, hilft die Software an keiner Ecke beim Entfernen von Einträgen. Nicht mehr benötigtes muss händisch aus httpd-vhost.conf und httpd-ssl.conf gelöscht werden, genau so, wie die hosts-Einträge in C:\Windows\System32\drivers\etc\hosts.
Und was ist it dem Tab 'Let's Encrypt'?
Offenbar sollte es auch möglich sein, dem Wampserver ein Let's Encrypt Zertifikat unterzuschieben. Versuche in dieser Richtung habe ich allerdings nicht unternommen, soviel ich dazu gelesen habe, wäre es auf alle Fälle notwendig, zu diesem Zweck eine echte Domäne zu buchen. Dann würde das Zertifikat auf diese Domäne ausgestellt, da kein seriöser Anbieter für localhosts Zertifikate ausstellen würde. Ferner ist es so, dass ein Let's Encrypt Zertifikat alle 90 Tage erneuert werden muss. Dazu hätte ich dann auch nicht wirklich Lust. Das hier erreichte genügt mir.
Links zum Thema
Die Homepage von Wampserver [EN]
Alle Downloads von Wampserver [EN]
Das Forum von Wampserver [EN]
Anleitung im Wampserver Forum zu SSL und vHosts [EN]
Support Mozilla: Stammzertifikaten von Drittanbietern automatisch vertrauen [DE]
Über den Autor dieses Artikels
Dieser Beitag wurde von Chris verfasst. Chris arbeitet seit 2009 mit Joomla und betreut die Joomla User Group Zürich, sowie diese Webseite. Er hat seit 2011 eine eigene kleine Webagentur und erstellt Webseiten für NGOs, KMUs und Privatpersonen. Daneben ist er auch in Foren tätig und hilft bei Joomla-Problemen.