# 🔒 Générer un certificat Let's Encrypt avec Nginx

Cette procédure permet de générer un certificat TLS Let's Encrypt pour un nouveau nom de domaine hébergé derrière le serveur Nginx de la plateforme.

Elle est utilisée lorsqu'un nouveau service HTTP(S) est publié.

---

## 🎯 Objectif

À la fin de cette procédure :

- Le Virtual Host Nginx existe.
- Le challenge ACME est accessible.
- Le certificat Let's Encrypt est généré.
- Le certificat pourra ensuite être utilisé dans la configuration HTTPS.

---

## 📋 Prérequis

- Le nom DNS existe.
- Le domaine pointe vers le serveur Web.
- Le port TCP 80 est accessible depuis Internet.
- Certbot est installé.
- Nginx fonctionne correctement.

---

## 📝 Étape 1 - Créer le Virtual Host

Créer un nouveau fichier de configuration.

```bash
cd /etc/nginx/conf.d

nano pdf.numericare.fr.conf

```

---

## 📝 Étape 2 - Ajouter la configuration minimale

```
server {

    listen 80;

    server_name pdf.numericare.fr;

    location /.well-known/acme-challenge/ {

        root /var/www/certbot;

        allow all;

    }

    location / {

        return 404;

    }

}

```

---

## ✅ Étape 3 - Vérifier la configuration Nginx

```bash
nginx -t

```

Le résultat attendu est :

```
syntax is ok
test is successful

```

---

## 🔄 Étape 4 - Recharger Nginx

```bash
systemctl reload nginx

```

---

## 🔐 Étape 5 - Générer le certificat

```bash
certbot certonly \
--webroot \
-w /var/www/certbot \
-d pdf.numericare.fr

```

---

## ✅ Étape 6 - Vérifier le certificat

```bash
certbot certificates

```

Vérifier notamment :

- Le domaine.
- La date d'expiration.
- Le chemin des certificats.

---

## 📂 Emplacement des certificats

```
/etc/letsencrypt/live/<domain>/

```

Les fichiers principaux sont :

- fullchain.pem
- privkey.pem
- cert.pem
- chain.pem

---

## 🔍 Vérifications

### Tester la résolution DNS

```bash
dig pdf.numericare.fr

```

### Tester l'accès HTTP

```bash
curl http://pdf.numericare.fr

```

### Tester le challenge ACME

```bash
curl http://pdf.numericare.fr/.well-known/acme-challenge/test

```

---

## 🚨 Dépannage

<table id="bkmrk-probl%C3%A8me-v%C3%A9rificatio"><thead><tr><th>Problème</th><th>Vérification</th></tr></thead><tbody><tr><td>Échec du challenge ACME</td><td>Vérifier la résolution DNS et le Virtual Host.</td></tr><tr><td>Erreur 404</td><td>Contrôler le répertoire `/var/www/certbot`.</td></tr><tr><td>Erreur de permissions</td><td>Vérifier les droits sur le répertoire ACME.</td></tr><tr><td>Échec de validation</td><td>Contrôler que le port 80 est bien publié vers Nginx.</td></tr></tbody></table>

---

## 💡 Bonnes pratiques

- Toujours tester la configuration avec `nginx -t`.
- Ne jamais recharger Nginx sans validation préalable.
- Conserver une configuration minimale pendant la génération du certificat.
- Mettre ensuite à jour le Virtual Host avec la configuration HTTPS définitive.

---

## 🚀 Évolution de la plateforme

Cette procédure est actuellement réalisée manuellement. L'objectif à long terme est de l'automatiser entièrement via AWX et Ansible. À terme, la création d'un nouveau Virtual Host et l'obtention du certificat Let's Encrypt feront partie du processus de déploiement de la plateforme.

```