Plone, NGINX ed HTTPS

Connessioni sicure? Utilizziamo HTTPS!

Cos'è HTTPS?

HTTPS è un protocollo di comunicazione web che attraverso l'uso della crittografia permette una comunicazione sicura da sorgente a destinatario.

In questo modo viene creato un canale diretto tra utente e portale, in modo da riuscire ad evitare - tra le altre cose - attacchi di tipo man-in-the-middle, ovvero quelli in cui il malintenzionato riesce ad inserirsi nella comunicazione per raccogliere informazioni e modificarle a suo piacimento.

I protocolli di cifratura utilizzati per HTTPS sono TLS ed SSL.

 

NGINX

Configurare NGINX affinché possa servire i nostri portali Plone tramite HTTPS è abbastanza semplice, basta avere alcune accortezze:

  • avere a disposizione un certificato SSL generato da un ente preposto
  • abilitare il modulo SSL di NGINX
  • configurare correttamente il VirtualHost per Plone

 

Ottenere un certificato SSL valido

I certificati SSL possono essere generati in due modi:

  • in modo autonomo
  • tramite una Certification Authority

Nel primo caso, il certificato verrà identificato come self-signed e ciò significa che nessun ente ha provveduto alla sua validazione, per cui una parte del meccanismo di sicurezza viene a mancare in quanto l'attendibilità del certificato non è verificata.

Questa tipologia di certificati viene utilizzata, solitamente, per servizi non pubblici in cui il certificato lo si importa manualmente nel browser o per i test di configurazione.

Inoltre, quando si utilizzano questi certificati, i browser mostrano un messaggio di avviso prima di far accedere l'utente al sito web.

I certificati SSL generati dagli enti preposti, invece, sono validati e la loro attendibilità è verificata: in questo modo, la comunicazione può essere considerata sicura.

Di seguiti alcuni siti dove poter acquistare i certificati SSL per il proprio portale:

 

Installazione di NGINX

Assicurarsi che la distribuzione GNU/Linux che si utilizza fornisca un pacchetto di NGINX con abilitato il supporto SSL.

Se si preferisce, invece, l'installazione attraverso buildout, aggiungere --with-http_ssl_module come riportato nello snippet seguente:

[nginx]
recipe = zc.recipe.cmmi
url = http://nginx.org/download/nginx-1.0.14.tar.gz
extra_options =
        --with-debug
        --with-http_ssl_module

 

Configurazione del VirtualHost

Ottenuti i certificati e installato correttamente il webserver, passiamo alla configurazione del VirtualHost di Plone.

Il nostro scopo è far visualizzare il portale esclusivamente in HTTPS così da avere sempre le connessioni sicure per i visitatori.

Bisogna quindi modificare il file del VirtualHost in modo da:

  • effettuare il redirect da HTTP ad HTTPS in modo automatico
  • utilizzare correttamente i certificati SSL

Nel file di configurazione utilizziamo due blocchi di tipo server: uno per le richieste di tipo HTTP, un altro per quelle HTTPS.

aggiungiamo i certificati SSL

ssl_certificate         /home/zope/nginx/ssl/mioportale.com.crt;
ssl_certificate_key     /home/zope/nginx/ssl/mioportale.com.key;

Nel primo blocco server configuriamo la rewrite per redirigere gli utenti da HTTP a HTTPS

server {
  port_in_redirect off;
  listen        80;
  server_name   www.mioportale.com;

  access_log    /var/log/nginx/mioportale.com.access.log;
  error_log     /var/log/nginx/mioportale.com.error.log;

  
  location ^~ / {
    rewrite ^/(.*)$  https://www.mioportale.com/$1;
  }

Nel secondo blocco server configuriamo invece il VirtualHost di Plone

server {
  port_in_redirect off;
  listen        443;
  server_name   www.mioportale.com;
  ssl           on;

  access_log    /var/log/nginx/mioportale.com.access.log;
  error_log     /var/log/nginx/mioportale.com.error.log;

  location ^~ / {
    rewrite ^/(.*)  /VirtualHostBase/https/$server_name:443/Plone/VirtualHostRoot/$1 break;
    proxy_pass http://backend;
  }
}

Sono stati modificati i parametri:

  • listen impostato a 443 invece che 80
  • ssl impostato ad on
  • nella rewrite abbiamo impostato https e 443 invece di http ed 80

Riavviamo NGINX ed avremo il nostro sito accessibile via HTTPS

 

Ulteriori informazioni

NGINX - Wiki

Protocollo HTTPS

Configurazione Plone con NGINX

Occhio alle cache: Varnish non supporta SSL

Share this on

Share |

On same topics

Commenti

comments powered by Disqus