LetsEnrcrypt

Da EigenWiki.

Let'sencrypt è un progetto di Mozilla per fornire certificati HTTPS gratuitamente ed in modo automatico. Let's encrypt permette di richiedere un certificato, di autoconfigurare apache, di creare un webserver in python per far avvenire l'autenticazione del nome dominio ed altre cose simili tutto in maniera quasi completamente automatica.

Quasi completamente appunto.

Per esempio un caso più complesso è quello di un'applicazione, ad esempio etherpad, in cui il ruolo di apache è solo di proxy. In questo caso bisogna scegliere il metodo manuale e fare un po' di configurazioni nel virtualhost.

Scenario

Internert -> Apache di frontiera -> Apache dell'host che fa da proxy -> Server dell'applicazione

In questo caso, non volendo mettere offline i servizi forniti dall'host, bisogna scegliere il percorso manuale di let'sencrypt che consiste nel far mostrare ad un url deciso da letsencrypt un certo contenuto.

Assumendo che l'Apache di frontiera passi tutte le richieste all'apache dell'host bisogna configurare quest'ultimo per non proxare all'applicazione i contenuti che dobbiamo servire a let'sencrypt.

Come fare

Editiamo il file di configurazione dell sito pad.eigenlab.org: All'inizio pensavo che bastasse una direttiva alias per mappare un url ad un path sul filesystem ma ricevevo un permission denied, ho optato quindi per definire un blocco directory

<VirtualHost  *:80>
   ServerName          etherpad.eigenlab.org
   ServerAlias         pad.eigenlab.org
   CustomLog           /var/log/apache2/etherpad.eigenlab.org-access.log combined
   ErrorLog            /var/log/apache2/etherpad.eigenlab.org-error.log
# Sta roba server per letsencrypt
   DocumentRoot        /var/www/localhost/htdocs

Definisco la document root per pescare i files da lì

   <Proxy *>
       Order deny,allow 
       Allow from all 
   </Proxy>

Direttive normali per il proxy

# Staroba serve per letsencrypt
   ProxyPass /.well-known/acme-challenge !

Questo dice ad apache che l'url che inizia con .well-known/acme-challenge non deve essere proxato, questo path ce lo ha indicato lets'encrypt.

   <Directory "/" >
       AllowOverride All
       Order allow,deny
       Allow from all
   </Directory>

Questo definisce un blocco directory che serve per mostrare il file impostando i permessi di accesso


   ProxyRequests       off
   ProxyPreserveHost   on
   ProxyPass           / http://etherpad.eigenlab.org:9002/
   ProxyPassReverse    / http://etherpad.eigenlab.org:9002/
</VirtualHost>

Questa è la solita configurazione di un proxy

In questo modo tutte le richieste del tipo pad.eigenlab.org/.well-known/acme-challenge verranno servite da apache stesso e non proxate. Nella document root creiamo quindi una cartella

.well-known/acme-challenge

e dentro creiamo il file che dovrà essere servito per dimostrare a letsencrypt che possediamo quel dominio.

Fatto!