---
title: "De Dehydrated à Certbot"
date: 2023-04-22T23:52:19+02:00
draft: false
---

## Le commencement

J'utilisais pour générer mes certificats `x509` la solution [dehydrated](https://github.com/dehydrated-io/dehydrated) dès le premier jour ou presque de mon usage avec let's encrypt.
Du bash hyper simple pour faire le sucre nécessaire à l'obtention de certificats letsencrypt ou respectant les challenges **acme**. C'était très bien.

Le client officiel était quant à lui lourd peu modulaire avec peu d'extension. L'idée initial car nouveauté était :

> je fais tout pour toi

Je suis pas fan. Sérieusement, modifier les vhosts de mon serveur web, c'est un grand non.
Les temps ont changés, des options moins intrusive éxistent et dorénavant j'utilise la rfc2136 pour obtenir mon wildcard plutôt qu'un gros `INSERT` dans ma base PostgreSQL.

J'ai du louper des choses car régulièrement ça ne fonctionne pas bien, surement des échappements ou autre.

Je pense qu'en insistant plus j'aurais fini par trouver la solution.
Mais pourquoi ne pas essayer autre chose et (re)voir le client officiel **certbot** ?

## Certbot

La [documentation](https://eff-certbot.readthedocs.io/en/stable/using.html) utilisateur est de qualité. Passons donc à l'install.

### Install

Le client officiel *letsencrypt/acme* est en python, disponible sur PyPi. J'ai aussi besoin du plugin rfc2136, allons-y donc :

```bash
pip install certbot certbot-dns-rfc2136
```

Une liste plus grande des plugins disponibles via <https://eff-certbot.readthedocs.io/en/stable/using.html#dns-plugins>

## Migration dehydrated→certbot

Mais pourquoi migrer ? hop on part from scratch !
Oui mais alors non.
Si vous n'utilisez pas `DANE-EE` mais plutôt `PKIX-EE`, OUI ne rien migrer est une bonne idée. Bon évidemment moi j'utilise `DANE-EE` car je ne souhaite pas distribuer de manière automatique la clé privée. Peut-être un jour une autre façon de faire.

A voir

### Réimport

Les fichiers de `dehydrated` comportent des sauts de lignes que certbot ne sait pas lire.
Fixons cela:

```bash
find . -type f -name '*.pem' | xargs sed -i '/^$/d'
```

Il y a aussi une problématique sur les noms des fichiers. Il faut que ça respecte la nomenclature à savoir \<filename>XXX.\<extension> ou XXX est un chiffre.

Si vos certificats utilisent une clé ECDSA il faut spécifier ceci dans `cli.ini`

```ini
# Use ECC for the private key
key-type = ecdsa
elliptic-curve = secp384r1
```
Et voilà