Stavo appunto cercando qualche informazione su come mettere in https
il login con i popup (e questa è la domanda alla lista: qualcuno l'ha
già fatto?), e in generale come mettere sotto https plone 4 per gli
autenticati, e sono capitato in questo post.
Per plone senza popup, mi pare funzionino le stesse regole dai tempi
di plone 2.5, che sono simili alle tue:
<VirtualHost *:80>
[...]
RewriteRule ^($|.*)/login_form$ https://%{SERVER_NAME}$1/login_form [L]
# RewriteRule ^($|.*)/login$ https://%{SERVER_NAME}$1/login [L]
RewriteRule ^/(.*)passwordreset(.*)
https://%{SERVER_NAME}/$1passwordreset$2 [L]
RewriteCond %{QUERY_STRING} ^came_from=http\%3A//(.*)
RewriteRule ^/(.*)require_login
https://%{SERVER_NAME}/$1require_login\?came_from=https://%1 [L]
RewriteCond %{HTTP_COOKIE} __ac=
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [NE,L]
[...]
# Proxy Rewrite sul balancer
RewriteRule ^/(.*)
http://localhost:9000/VirtualHostBase/http/%{SERVER_NAME}:80/Plone/VirtualHostRoot/$1
[P,L]
</VirtualHost>
...l'unica differenza sostanziale è che io metto in https anche il
template "passwordreset"
Per quel che riguarda il virualhost sulla 443, io ne uso 2, in due
files distinti, uno in alternativa all'altro: ssl-open e ssl-locked
(più un terzo incluso in entrambi: ssl-common)
### ssl-open ###
# questo file contiene un virtualhost che dovrebbe essere attivo IN
ALTERNATIVA a ssl-locked:
# questo virtualhost è quello normalmente attivo in produzione, e
permette l'accesso pubblicatore in https.
NameVirtualHost *:443
<VirtualHost *:443>
Include ssl-common
# Resto in https nelle pagine dove si immettono le credenziali, anche
se non sono ancora loggato
RewriteRule
^/(.*)(require_login|login_form|password_form|mail_password_form|mail_password|plone_change_password|passwordreset|pwreset_form)(.*)
\
http://localhost:9679/VirtualHostBase/https/%{SERVER_NAME}:443/Plone/VirtualHostRoot/$1$2$3
[P]
# Se non c'è il cookie __ac non sono loggato: torno in http...
RewriteCond %{HTTP_COOKIE} !__ac=
RewriteRule ^(.*) http://%{SERVER_NAME}$1 [NE,L]
[...]
# ...resto in https in tutti gli altri casi
RewriteRule ^/(.*)
http://localhost:9679/VirtualHostBase/https/%{SERVER_NAME}:443/Plone/VirtualHostRoot/$1
[L,P]
</VirtualHost>
### fine ssl-open ###
### ssl-locked ###
# questo file contiene un virtualhost che dovrebbe essere attivo IN
ALTERNATIVA a ssl-open:
# questo virtualhost impedisce all'utente loggato di operare, e lo
rimanda ad una pagina di servizio.
# viene attivato durante gli aggiornamenti di sistema, per impedire
che i pubblicatori facciano modifiche sul
# server secondario utilizzato mentre il server "di produzione" viene
riavviato
NameVirtualHost *:443
<VirtualHost *:443>
Include ssl-common
# Vado nella pagina di servizio nelle pagine dove si immettono le
credenziali, anche se non sono ancora loggato
RewriteRule
^/(.*)(require_login|login_form|password_form|mail_password_form|mail_password|plone_change_password|passwordreset|pwreset_form)(.*)
\
http://%{SERVER_NAME}/pagine-speciali/pubblicazione-sospesa [L]
# Se c'è il cookie __ac sono loggato: forzo il logout
RewriteCond %{HTTP_COOKIE} __ac=
RewriteRule ^/(.*)
http://localhost:9679/VirtualHostBase/https/%{SERVER_NAME}:443/Plone/VirtualHostRoot/logout
[L,P]
# Se non c'è il cookie __ac non sono loggato: torno in http...
RewriteCond %{HTTP_COOKIE} !__ac=
RewriteRule ^(.*) http://%{SERVER_NAME}$1 [NE,L]
# ...mando alla pagina di servizio in http in tutti gli altri casi
RewriteRule ^/(.*) http://pagine-speciali/pubblicazione-sospesa [L,P]
</VirtualHost>
### fine ssl-locked ###
### ssl-common ###
# Questre istruzioni sono comuni ai virtualhost SSL,
# e sono pensate per essere incluse DENTRO il virtualhost
[...]
# Resto in https se vengono richieste risorse statiche
RewriteRule ^/(.*)(gif|jpg|css|js)(.*) \
http://localhost:9679/VirtualHostBase/https/%{SERVER_NAME}:443/Plone/VirtualHostRoot/$1$2$3
[P]
### fine ssl-common ###
Anche qui, la differenza è che resto in https anche senza cookie __ac
in questi templates:
- require_login
- login_form
- password_form
- mail_password_form
- mail_password
- plone_change_password
- passwordreset
- pwreset_form
...e anche in questo caso, si tratta di direttive pensate per plone
2.5: su plone4 sono ancora valide? Ci sono altri templates da
"proteggere" senza cookie __ac? ...sempre che qualcuno sia arrivato a
leggere fin quaggiù :-)
my 2 cent,
Max
Quoting Michele Mordenti <[email protected]>:
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
_______________________________________________
Plone-IT mailing list
[email protected]
https://lists.plone.org/mailman/listinfo/plone-plone-it
http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html
Massimiliano De Ruosi
---------------------
AINF (Area servizi informatici e multimediali)
Universita' degli Studi di Udine
Via delle Scienze, 208
33100, Udine (UD) ITALY
Tel. +39 (0)432 55 8893
Cell. +39 320 4350861
Fax: +39 (0)432 55 8911 (segr. AINF)
email: [email protected]
----------------------------------------------------------------------
SEMEL (SErvizio di Messaging ELettronico) - AINF, Universita' di Udine
_______________________________________________
Plone-IT mailing list
[email protected]
https://lists.plone.org/mailman/listinfo/plone-plone-it
http://plone-regional-forums.221720.n2.nabble.com/Plone-Italy-f221721.html