Kürzlich stand ich vor der Herausforderung, den Datentransfer mit einer online auf einem Paste HTTP Server laufenden Pylons-Instanz mit SSL zu verschlüsseln.
Ich entschied mich für den Einsatz eines vorgeschaltenen Apache, wie ihn u.a. James Gardner im Kapitel “Authentication and Authorization” seines kürzlich erschienenen Buches The Definitive Guide to Pylons beschreibt. Da Jamens Gardners Ausführungen jedoch nicht umfassend genug sind und ich kein geeignetes Tutorial habe finden können, möchte ich hier knapp zusammenfassen, wie der Zugriff auf Pylons (Version 0.9.7) auf einem Paste HTTP Server bei einem bereits installierten SSL-Zertifikat (hierfür gibt es genügend Tutorials…) durch den Einsatz eines Apache-Proxy auf SSL beschränkt werden kann.
Zuerst gilt es, den SSL-Zugriff auf den Paste HTTP Server über den Apache-Proxy einzurichten. Hierfür ist die Konfiguration der virtuellen Hosts des Apache anzupassen. Diese könnte beispielsweise folgendermaßen aussehen:
NameVirtualHost *:80 NameVirtualHost *:443 <VirtualHost *:80> ServerName zu-sichernde-pylons-instanz.de RewriteEngine On RewriteRule ^/(.*) https://%{HTTP_HOST}%{REQUEST_URI} [R] </VirtualHost> <VirtualHost *:443> ServerName zu-sichernde-pylons-instanz.de SSLEngine on SSLCertificateFile /etc/apache2/ssl.crt/crt.crt SSLCertificateKeyFile /etc/apache2/ssl.key/key.key SSLCACertificatePath /etc/apache2/ssl.crt SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt ProxyPass / http://127.0.0.1:5000/ retry=5 ProxyPassReverse / http://127.0.0.1:5000/ ProxyPreserveHost On <Proxy *> Order deny,allow Allow from all </Proxy> </VirtualHost>
Alle nicht SSL-verschlüsselten Anfragen (Port 80) auf die “zu-sichernde-pylons-instanz.de” werden durch diese Konfiguration auf SSL (Port 443) umgeleitet. Die SSL-verschlüsselten Anfragen werden wiederrum an den lokal auf dem Port 5000 laufenden Paste HTTP Server weitergeleitet. Normalerweise sollte nun bereits alles funktionieren.
Allerdings sollte noch der bis dato ggf. öffentliche Zugriff auf den Paste HTTP Server auf den Server selbst beschränkt werden, da der Apache möglichst der einzige sein sollte, der mit dem Paste HTTP Server kommunizieren soll. Hierzu ist der Host in der development.ini anzupassen:
[server:main] host = 127.0.0.1 port = 5000
Das war’s dann auch schon. Eine weiterführende Diskussion, u.a. hinsichtlich des Durchreichens der Information an die Pylons-Instanz, ob es sich (ursprünglich) um eine verschlüsselte oder unverschlüsselte Anfrage handelt, findet sich in der Pylons Google Group.
Autor: Andre Kolell
Datum: Samstag, 27. Dezember 2008, um 19:10 Uhr
Themen: (Web) Development, Pylons Web Framework
Trackback: Trackback-URL | Feed zum Beitrag: RSS 2.0