letsencrypt WSGI

Default
,

Bonjour,

Voilà je rencontre un petit problème avec letsencrypt.
Ma conf apache contient deux virtualhost pointés par deux noms de domaine différent.
L'un d'eux pointe vers une conf WSGI, c'est mon application backend développée en Django (python), qui sert d'api rest.
-> on l'appellera VH1
L'autre pointe vers une conf statique, c'est mon application frontend développée en Angular.
-> on l'appelera VH2

Je souhaitais certifier mes applications

Ce que je fais

J'ai cloné le repo letsencrypt dans /opt
Puis j'ai executé /opt/letsencrypt/letsencrypt-auto
letsencrypt à parcouru mes confs apache et à identifié mes deux noms de domaine, super.
J'ai validé l'action proposée par ce dernier.

Ce que j'obtiens

letsencrypt à relevé une erreur liée à la WSGI lors du traitement de VH1, puis il confirme le traitement de VH2
Je jette un oeil au résultat en consultant les noms de domaines dans mon navigateur.
VH2 est HTTPS, super !
Mais VH1 redirige vers VH2, zut !

Je consulte donc mes confs apache et surprise ! Des rêgle de redirections ont étaient ajoutées, un attribut DocumentRoot à été ajouté à VH1, bref !
Heureusement j'avais prevu un backup..

Donc, est-ce que l'un de vous a déjà été confronté à ce problème ?

1 Réponse

Default
,

Salut!

Déjà, tu peux utiliser l'outil certbot pour gérer tes certificats letsencrypt, au lieu de cloner le dépôt, il est dispo sur tous les systèmes maintenant.

Il y a trois flags importants lorsque tu lances ta commande, afin de réaliser un challenge entre les serveurs de letsencrypt et le tien, et certifier la bonne possession du nom de domaine:

standalone: Fait tourner un serveur web indépendant en local (attention, à lancer en coupant le serveur web le temps de la commande). Exemple:

$ sudo certbot certonly --standalone --pre-hook "systemctl stop apache2" --post-hook "systemctl start apache2" -d mon.domain.com

nginx ou apache: utilise un plugin qui va modifier la conf de ton serveur web (ce que tu as probablement utilisé)

$ sudo certbot certonly --apache -d mon.domain.com

webroot: Utilise ton serveur web actuel, mais sans en modifier la conf. Il faudra cependant que tu aies une conf qui permet aux serveurs de letsencrypt de venir interroger ton serveur web (il viennent interroger le chemin http://mon.domain.com/.well-known/acme-challenge/. Généralement dans la conf on crée un Alias vers un dossier accessible en écriture du style:

Alias /.well-known/acme-challenge/ /chemin/vers/dossier/
        <Directory "/chemin/vers/dossier/">
            Options None
            AllowOverride None
            ForceType text/plain
        </Directory>
$ sudo certbot --webroot -d mon.domain.com

Bon après j'suis pas expert de Apache j'utilise plutôt nginx...

Dans tous les cas si tu ne veux pas t'embêter et que les services web que tu héberges supporteront une coupure des accès pendant quelques dixaines de secondes, je te conseille la commande standalone qui coupe ton serveur apache le temps du challenge.

N'oublie pas le flag --dry-run le temps de faire des essais.

J'espère que ça t'aidera...