Prise en compte de letsencrypt dans apache et ubuntu

Let’s Encrypt est un service permettant d’obtenir un certificat SSL, permettant d’activer le HTTPS sur un service web. C’est ce qui fait qu’il y a un cadenas à côté de l’URL de mon serveur par exemple.

Prérequis

  • avoir un nom de domaine (par exemple <mondomaine>.ovh )
  • avoir ubuntu d’installé
  • avoir apache d’installé
  • avoir une configuration existante pour un site en http Dans mon exemple : le fichier de configuration est actif et présent dans
/etc/apache2/sites-available/mondomaine.ovh.conf

Le nom du fichier est très important pour la suite.

Etape 1 : vérification du fichier de configuration

Votre fichier de configuration doit être a priori constitué comme ceci

<VirtualHost *:80>
...
ServerName <mondomaine>.ovh
ServerAlias <www.mondomaine>.ovh
ServerAdmin <adresse>@<mondomaine>.ovh
</VirtualHost>

Si vous faites des changements dans le fichier, n’oubliez pas de faire un test de syntaxe AVANT de le passer en prod…

 sudo apache2ctl configtest

Puis

sudo systemctl reload apache2

Etape 2 : installer CertBot

Certbot, c’est l’utilitaire permettant de récupérer le certificat SSL et surtout de l’installer directement dans apache.

Comme la version déjà installée dans ubuntu n’est pas très à jour, il vaut mieux utiliser le ppa fournit par l’équipe de développement de letsencrypt

sudo add-apt-repository ppa:certbot/certbot 
sudo apt install python-certbot-apache

Etape 3 : récupérer et installer le certificat

Si votre fichier apache2 est bien nommé, vous n’avez plus qu’à faire :

sudo certbot --apache -d mondomaine.ovh -d www.mondomaine.ovh

Puis laissez vous guider. A la première utilisation de certbot, un mail vous est demandé pour que letsencrypt puisse vous transmettre des infos (pratique en cas de souci…)

Personnellement, j’ai choisi de rediriger tous les flux http en https, pour des raisons de positionnement dans google.

Etape 4 : vérifier que le service se renouvellera

Normalement, certbot se configure correctement pour récupérer un nouveau certificat quand il expire. Bon… on sait jamais, ça peut arriver que ça ne fonctionne pas, donc voici une commande pour vérifier qu’il n’y a pas de souci

sudo certbot renew --dry-run 

S’il n’y a pas de message d’erreur, tout va bien. Si pour une raison ou une autre, le certificat expire, il suffit alors de relancer l’opération sans le dry-run

sudo certbot renew 

Quelques liens pour finir

Je me suis basé sur un ensemble de tutoriaux (en anglais) pour rédiger le mienPar exemple, l’excellent site DigitalOcean,   mais aussi le forum ubuntu france, les tutoriaux let’s encrypt

Proxifié octoprint derriere un serveur apache

Suite à l’ajout d’une webcam sur notre octoprint, très vite nous avons voulu pouvoir contrôler à distance le résultat du travail. Sauf que… on a déjà un serveur web tournant sur une autre machine.

Deux méthodes sont alors possibles : soit rediriger l’accès via un autre port En utilisant des redirections dans la box internet via, par exemple 8080 => <adresse ip host octoprint:80>

Mais pas idéal quand on a un nom de domaine, et puis on oublie assez vite le numéro de port… Donc, je me suis basé sur le tutorial suivant, dans la version adapté à Apache.

https://discourse.octoprint.org/t/reverse-proxy-configuration-examples/1107

Mais… l’exemple indiqué ne fonctionne pas si apache est installé sur un autre poste que le raspberry pi.

Voici une version corrigée :

<Location /octoprint/>
ProxyPass http://<adresse ip host octoprint>/
ProxyPassReverse http://<adresse ip host octoprint>//
RequestHeader set X-SCRIPT-NAME /octoprint/
RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule .* ws://<adresse ip host octoprint>/:80%{REQUEST_URI} [P]
</Location>