[Plone-IT] Apache, Plone e la password 'pippo'

Michele Mordenti michele.mordenti a gmail.com
Lun 20 Ago 2012 09:56:26 UTC


Plone necessita di una password minima di 5 caratteri: quale migliore
password di "pippo"?
Il problema che sto affrontando č che la password viaggia in chiaro:
come faccio a proteggere la mia superpassword "pippo" da occhi
indiscreti?

Googlando ho trovato tre guide fare lo switch da HTTP a HTTPS
 - http://plone.org/documentation/kb/apache-ssl/
 - http://lab.oscert.net/plone/configurare-plone-dietro-apache-e-varnish
 - http://dtranhuu.dyndns.org/news/apache2-in-front-of-plone-on-ubuntu-server-9.10
ma nessuna delle tre ha funzionato a dovere; in particolare mi ha dato
diversi grattacapi la parte relativa alla richiesta di una risorsa
privata.
Lavorandoci un po' sopra ora tutto sembra filare liscio e mi permetto
di condividere con voi la soluzione che ho trovato nell'auspicio di:
 - preparare pappa pronta per altri
 - se sbaglio... mi corriggerete

Condizioni al contorno:
 - istanza Plone di debug attiva sulla porta 8088
 - Plone senza "pop-up semplici" in Pannello di Controllo ->Temi (il
giochino non funziona con la popup di login)
 - id istanza Plone: "Plone"
 - apache con cartella virtuale "/plonetest" che redirige la root
dell'istanza "Plone"

Sotto la configurazione apache per HTTP

<VirtualHost *:80>
    ... TUTTO IL RESTO NON PLONESCO ...

    <Location /plonetest>
        Deny from All
        Allow from 192.168.1.1/32
    </Location>

    # Rewrite rules
    RewriteEngine On
    RewriteLog /var/log/apache2/plonetest-rewrite.log
    RewriteLogLevel 4

    # Redirigo su HTTPS se chiedo una risorsa Plone ed il cookie
"__ac" e' settato:
    RewriteCond %{REQUEST_URI} ^/plonetest(.*)
    RewriteCond %{HTTP_COOKIE} __ac=
    RewriteRule ^/(.*)$ https://%{SERVER_NAME}/$1 [R,L]

    # Redirigo su HTTPS alla richiesta di login dell'utente:
    RewriteRule ^/plonetest/login(.*)$
https://%{SERVER_NAME}/plonetest/login$1 [R,L]

    # Redirigo su HTTPS alla richiesta di una risorsa privata plonesca:
    RewriteCond %{REQUEST_URI} ^/plonetest(.*)
    RewriteCond %{QUERY_STRING} came_from=http(.*)
    RewriteRule ^($|/.*)require_login$
https://%{SERVER_NAME}$1require_login?came_from=https%1 [NE,L]

    # Alla normale richiesta di una pagina servita da Plone 'proxo' l'istanza:
    RewriteRule  ^/plonetest(.*)$
http://localhost:8088/VirtualHostBase/http/%{SERVER_NAME}:80/Plone/VirtualHostRoot/_vh_plonetest$1
[L,P]
</VirtualHost>


Sotto la configurazione apache per HTTPS
<VirtualHost 192.168.1.2:443>
    ... TUTTO IL RESTO NON PLONESCO ...

    <Location /plonetest>
        Deny from All
        Allow from 192.168.1.1/32
    </Location>

    # Rewrite rules
    RewriteEngine On
    RewriteLog /var/log/apache2/ssl_plonetest-rewrite.log
    RewriteLogLevel 4

    # Proxo Plone in HTTPS alla richiesta di autenticazione
    # (previene redirezione su HTTP per regola __ac non ancora impostato):
    # - alla richiesta di login
    # - utente autenticato, forse superflua
    # - tengo l'utente ancora in HTTPS nel caso si volesse
riautenticare nel form presente nella pagina
    # - alla richiesta risorsa privata
    RewriteCond %{REQUEST_URI} ^/plonetest/login.* [OR]
    RewriteCond %{REQUEST_URI} ^/plonetest/logged_in.* [OR]
    RewriteCond %{REQUEST_URI} ^/plonetest/logged_out.* [OR]
    RewriteCond %{REQUEST_URI} ^/plonetest/(.*)require_login(.*)$
    RewriteRule  ^/plonetest(.*)$
http://localhost:8088/VirtualHostBase/https/%{SERVER_NAME}:443/Plone/VirtualHostRoot/_vh_plonetest$1
[L,P]

    # se richiedo pagina "Plone" ed il cookie "__ac" non e' settato
(utente non autenticato) allora redirigo di HTTP:
    RewriteCond %{REQUEST_URI} ^/plonetest(.*)$
    RewriteCond %{HTTP_COOKIE} __ac=.deleted. [OR]
    RewriteCond %{HTTP_COOKIE} !__ac=
    RewriteRule ^/(.*)$ http://%{SERVER_NAME}/$1 [R,L]

    # Alla normale richiesta di una pagina servita da Plone con
l'utente autenticato 'proxo' l'istanza:
    RewriteRule  ^/plonetest(.*)$
http://localhost:8088/VirtualHostBase/https/%{SERVER_NAME}:443/Plone/VirtualHostRoot/_vh_plonetest$1
[L,P]
</VirtualHost>

Si puņ fare di meglio?
Grazie, ciao.

-- 
Michele Mordenti


Maggiori informazioni sulla lista Plone-IT