HTTPs : Mise en place d’un certificat SSL gratuit sur dédié (Apache)

J’ai décidé de faire un tuto rapide pour vous aider à mettre en place un certificat SSL sur vos sites. Cette technique est totalement gratuit mais vous devez disposer d’un serveur dédié, d’un VPS ou serveur Cloud. Bref, un serveur sur lequel vous avez entièrement la main.

J’utilise Let’s Encrypt pour générer mes certificats. Il est en beta publique depuis le 3 Décembre et en préparation depuis plus d’un an. La version actuelle est stable, vous pouvez donc tenter le coup.

Installation du certificat SSL

La première chose à faire est d’installer Git :

apt-get install git

Puis il faut cloner le client LE qui permettra de générer les certificats, les renouveler et mettre à jour la configuration Apache. Vous pouvez lancer cette commande ou vous le souhaitez dans votre dossier web racine, chez moi /var/www/ :

git clone https://github.com/letsencrypt/letsencrypt

Vous pouvez maintenant lancer la configuration manuelle :

cd letsencrypt
./letsencrypt-auto

Vous tomberez sur une succession d’écrans suffisamment compréhensibles pour que je ne m’attarde pas dessus.

ecran1

ecran2

ecran3

Attention à cette étape, cochez bien « Secure » pour éviter les problèmes de dupliqué interne, mauvais pour le référencement naturel.

ecran4

Une fois terminé, les certificats seront installés et configurés sur vos sites. Vous devriez déjà avoir une redirection en plus. Pour faire les choses bien, j’ai toutefois modifié certaines choses sur mon WordPress.

Configuration de WordPress

Dans le fichier wp-config.php :

define('FORCE_SSL_LOGIN', true);
define('FORCE_SSL_ADMIN', true);

Dans les paramètres généraux de WordPress :

parametres-wordpress

Puis j’ai installé WordPress HTTPs. L’option Force SSL Exclusively causait des incompatibilités avec un Page builder que j’utilise donc je ne l’ai pas activée. Seule la première option Force SSL Administration est active sur ma configuration.

Vérification de la mise en place

Le test à été réalisé sur ce site. Vous pouvez voir qu’il y a bien une redirection automatique du http vers https en 301 et que le certificat est reconnu :

redirection301

Vérifiez tout de même que tous les fichiers sont accessibles en https sur Why No Padlock. Il permet de savoir pourquoi votre site internet est considéré comme non sécurisé, même avec un certificat.

verificationssl

Cron pour renouveler les certificats

Les certificats LE ne durent que 3 mois. Il faut donc les renouveler assez souvent. Soit vous le faites manuellement avec la commande letsencrypt, soit vous le faites automatiquement.

Dans le dossier letsencrypt/, j’ai donc créé le fichier de configuration cli.ini. Il contient les paramètres nécessaires pour renouveler les certificats :

# Use a 4096 bit RSA key instead of 2048
rsa-key-size = 4096

# Always use the staging/testing server
server = https://acme-v01.api.letsencrypt.org/directory

# Uncomment and update to register with the specified e-mail address
email = xxx@gmail.com

# Uncomment and update to generate certificates for the specified
# domains.
domains = www.xxx.org,xxx.org

# Uncomment to use the webroot authenticator. Replace webroot-path with the
# path to the public_html / webroot folder being served by your web server.
authenticator = webroot
webroot-path = /var/www/

renew-by-default
agree-tos
text

Testez votre fichier de configuration :

./letsencrypt-auto certonly --config cli.ini

Si ça passe, c’est tout bon, sinon (Error: The client lacks sufficient authorization, Error: The server could not connect to the client for DV, etc), il faut creuser.

Il ne reste plus qu’à ajouter la cron (manuellement ou via ISP Config ou autre). D’ailleurs si vous utilisez ISP Config, utilisez plutôt ce script et suivez les consignes.

Bravo !

PHP 7 vs PHP 5.x : quelles sont les différences ?
WordPress / Prestashop : auditer un serveur en cas de piratage

4 Comments on “HTTPs : Mise en place d’un certificat SSL gratuit sur dédié (Apache)”

  1. Salut,

    Merci pour le tuto hyper simple. Donc on ne gère même pas la création du CSR ? Ou sont stockées les clés ?

    Sinon faut préciser que ce sont des certs DV, le niveau 0 du SSL ;)

    1. Salut Sylvain,
      On ne gère pas la création du CSR, ni avec cette méthode, ni avec ISP Config d’ailleurs. Ça le fait en auto.
      Les clés sont stockées dans /etc/letsencrypt/live/www.xxx.org/
      Et effectivement, ces certificats ont le niveau minimum de sécurité possible. J’aimerais bien avoir des EV gratuitement mais bon ;) LE ne le prévoit pas pour l’instant.

    1. Il y a des différences au niveau de la reconnaissance de la marque (notoriété), de la sécurité et des ‘services’ liés à ce certificat (remboursements, assurances, etc).

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *