> ## Content Index
> Fetch the complete content index at: https://mindsers.blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# Du SSL rapide et gratuit pour vos services
- URL: https://mindsers.blog/fr/post/ssl-rapide-gratuit/
- Published: 2017-07-12T04:00:00.000Z
- Updated: 2020-12-10T08:50:03.000Z
- Author: Nathanaël Cherrier
- Tags: ssl, coding-tech, http, https, gitlab, nginx, #lang-fr

Il est passé le temps où on était obligé de payer pour un certificat SSL et où il fallait remplir 15 000 papiers et attendre la réponse de l'autorité de certification.

Aujourd'hui nous avons *[let's encrypt](https://letsencrypt.org/?ref=mindsers.blog)* qui a décidé de mettre un gros coup de pied dans la fourmilière en simplifiant tout ça et surtout, en rendant la génération du certificat totalement gratuit.

Voyons comment, en quelques minutes, nous allons pouvoir rendre nos applications accessibles en HTTPS.

## Installation de l'utilitaire

Pour commencer, il faut installer un utilitaire appelé `certbot` sur la machine vers laquelle pointe les domaines que nous souhaitons certifier.

Il est disponible sur les repos backport à partir de la version 8 de debian.

Dans le fichier `/etc/apt/sources.list` ajouter la ligne :

```
deb http://ftp.debian.org/debian stretch-backports main

```

Cela permettra à `apt` de pouvoir chercher des paquets sur le backport de *Stretch* (debian 9).

Ensuite l'installation est tout ce qu'il y a de plus classique.

```
$ sudo apt-get update
$ sudo apt-get -t stretch-backports install "certbot"

```

## Certifions.

La méthode que j'utilise pour certifier un nom de domaine n'est liée à aucune techno ou outil particulier. Elle est générique.

Par contre, elle nécessite de couper tous les services qui potentiellement écoute sur le port 80.

Certbot va lancer un micro serveur qui va fournir sur le port 80 les infos nécessaires pour la certification. Il a donc besoin que ce port soit libre.

```
$ sudo certbot certonly --standalone -d domaine.com

```

- `--standalone` est la méthode que nous utilisons pour effectuer le processus de certification
- `-d` permet d'indiquer les domaines à certifier. Vous pouvez certifier plusieurs domaines en même temps en rajoutant des `-d`. Bien-sûr il faut que tous ces domaines pointent vers la machine sur laquelle nous lançons cette commande.

Une fois le processus terminé, vous retrouverez les fichiers `.pem` dans le dossier `/etc/letsencrypt/live/[domaine]/`.

## Exemples d'utilisation

### Nginx sert en HTTPS

Demander à Nginx d'écouter sur le port 443 n'est pas compliqué :

```
server {
  listen *:443 ssl http2;

  ssl_certificate /etc/letsencrypt/live/[domaine]/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/[domaine]/privkey.pem;
}

```

Tout ce que nous avons eu à faire c'est de lui indiquer qu'il fallait écouter sur le port 443 et où était stocké les certificats/clés.

### Gitlab et SSL

Tout aussi simple, le support du SSL par Gitlab nécessite les actions suivantes :

- Modifier l'adresse de `http://[domaine-gitlab]` à `https://[domaine-gitlab]` dans le fichier `gitlab.rb`

```
# /etc/gitlab/gitlab.rb

external_url "https://[domaine]"

```

- Ajouter les fichiers `crt` et `.key` dans le dossier `/var/opt/gitlab/ssl/`. A créer s'il n'existe pas. Dans le dossier `ssl` renommez le `privkey.pem` en `[domaine-gitlab].key` et `fullchain.pem ` en `[domaine-gitlab].crt`

Il est aussi possible de faire des liens symboliques pour que les régénérations futures de certificats soient automatiquement pris en compte par les différents service qui les utilisent.

Normalement, ça doit faire moins de 15 min que vous lisez cet article et votre service doit à nouveau être opérationnel avec le support du SSL.