BLOG POST VOM 27. Dezember 2008

SSL-Zugriff auf Pylons (auf Paste HTTP Server) via Apache-Proxy

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.

Tags » , «

Autor:
Datum: Samstag, 27. Dezember 2008, um 19:10 Uhr
Themen: (Web) Development, Pylons Web Framework

Trackback: Trackback-URL | Feed zum Beitrag: RSS 2.0

Neuer Kommentar