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

Rispondere a