Auteur Sujet: Tutoriel pour chiffrer un site web gratuitement en 14 étapes simples  (Lu 49607 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 48 042
    • Twitter LaFibre.info
Tutoriel pour chiffrer un site web gratuitement en 14 étapes simples
Ou comment mettre un certificat SSL gratuit pour proposer un site en https


Le seul fournisseur de certificat reconnu par tous les navigateurs modernes est StartSSL de StartCom : https://startssl.com/?lang=fr
Pourquoi il fait des certificats gratuits ? StartCom est l'éditeur d'une distribution linux (StartCom Linux, basé sur RedHat) et souhaite rendre plus accessible les certificats SSL.



Étape 1/14 : Création d'un compte StartSSL

Il faut se rendre sur la page https://www.startssl.com/?app=11&action=true et cliquer sur Sign-up :


On se crée un compte sur StartSSL, il faut donc rentrer son nom / prénom / adresse :


Un courriel avec un code est envoyé sur l'adresse courriel, il faut recopier ce code sur l'interface pour valider le compte :


La validation se fait automatiquement ou manuellement en quelques heures, en fonction du risque de fraude :


Un courriel vous souhaite la bienvenue une fois la validation de votre compte effectuée :

vivien

  • Administrateur
  • *
  • Messages: 48 042
    • Twitter LaFibre.info
Tutoriel pour chiffrer un site web gratuitement en 14 étapes simples
« Réponse #1 le: 17 juillet 2014 à 13:59:16 »
Étape 2/14 : création d'un certificat client pour le navigateur web, afin de sécuriser les transferts avec StartSSL
Ce certificat est appelé certificat personnel par Firefox.

On va sur l'adresse reçue dans le courriel et on rentre le code indiqué dans ce même courriel :


On va générer une clé pour Firefox de "Haut Niveau". Elle est complètement indépendante de la clé qui sera utilisée pour le site Internet.


On valide l'installation sur Firefox :


Firefox nous informe qu'un certificat personnel a été installé :


L'inscription à StartSSL est terminée !

vivien

  • Administrateur
  • *
  • Messages: 48 042
    • Twitter LaFibre.info
Tutoriel pour chiffrer un site web gratuitement en 14 étapes simples
« Réponse #2 le: 17 juillet 2014 à 13:59:30 »
Étape 3/14 : Sauvegarde du certificat client du navigateur web xxxxx.P12 installé dans Firefox
Bien entendu, il est possible d'utiliser un autre navigateur, par contre la méthode pour faire la sauvegarde diffère un peu.

Cette sauvegarde est nécessaire pour pouvoir renouveler le certificat dans 11 mois et demi.

Dans le menu à droite de Firefox, cliquez sur préférence, puis dans l'onglet Avancé, tout à droite et enfin dans le sous onglet certificat, cliquez sur Afficher les certificats :


Il est possible que vous ayez d'autres certificats => Sélectionnez le certificat StartCom et cliquez sur Sauvegarder :


Firefox vous demande un mot de passe qui va protéger votre certificat. Il sera demandé lors de la restauration du certificat.
Choisissez le nom que vous souhaitez pour le certificat.


Firefox vous confirme la sauvegarde :

vivien

  • Administrateur
  • *
  • Messages: 48 042
    • Twitter LaFibre.info
Tutoriel pour chiffrer un site web gratuitement en 14 étapes simples
« Réponse #3 le: 17 juillet 2014 à 13:59:44 »
Étape 4/14 : vérification que vous êtes le propriétaire du nom de domaine qui và avoir le certificat SSL

Maintenant que l'inscription à StartSSL est terminée, on va de nouveau sur le site https://startssl.com/?lang=fr mais on clique sur Authenticate :


Si le certificat personnel est bien installé dans Firefox, on arrive dans le Control Panel qui liste les prochaines étapes :


On clique sur Validations Wizard puis on sélectionne Domain Name Validaiton dans la liste déroulante :


On rentre le nom de domaine qui và avoir un certificat :


StartSSL interroge le Whois pour récupérer des adresses courriel associées à ce nom de domaine et des adresses courriel génériques tel que postmaster.
Sélectionnez l'adresse courriel à laquelle vous avez accès qui sera l'adresse courriel de validation du domaine.


Un nouveau courriel vous est envoyé avec un code de validation qu'il faut recopier :


Le nom de domaine est validé pour 30 jours, ce qui signifie que vous avez 30 jours pour faire les étapes suivantes, mais votre certificat sera bien valable 1 an.

vivien

  • Administrateur
  • *
  • Messages: 48 042
    • Twitter LaFibre.info
Tutoriel pour chiffrer un site web gratuitement en 14 étapes simples
« Réponse #4 le: 17 juillet 2014 à 14:00:00 »
Étape 5/14 : Création du fichier xxxxx.KEY sur le serveur

Connectez vous au serveur web via SSH. Pas besoin des droits root pour les 11 premières étapes.

Je conseille de créer un dossier où tous les fichiers vont être regroupés temporairement.
mkdir ssl
cd ssl

On va rester dans ce dossier jusqu'à la 12ème étape.

Il faut générer le fichier .key avec OpenSSL :
openssl genrsa -des3 -out testdebit_avec_passphrase.key 4096
Remplacez testdebit par votre nom de domaine.

Le mot de passe (passphrase) demandé doit contenir uniquement des chiffres et des lettres. Sa taille minimum est de 10 caractères et sa taille maximum est de 32 caractères sans quoi StartSSL va le refuser.


vivien

  • Administrateur
  • *
  • Messages: 48 042
    • Twitter LaFibre.info
Tutoriel pour chiffrer un site web gratuitement en 14 étapes simples
« Réponse #5 le: 17 juillet 2014 à 14:00:13 »
Étape 6/14 : Création du fichier xxxxx.CSR (Certificate Request) sur le serveur web

Toujours en SSH, voici la ligne de commande à utiliser :
openssl req -new -key testdebit_avec_passphrase.key -out testdebit.csr
Remplacez testdebit par votre nom de domaine.

Répondez aux questions proposées :

  • Country Name : FR
  • State or Province Name : France
  • Locality Name : Châlons-en-Champagne
  • Organization Name : TestDebit.info
  • Organizational Unit Name : TestDebit.info
  • Common Name : testdebit.info
  • Email Address :
Ne pas remplir les éléments suivants (challenge password / company name) qui sont optionnels.


vivien

  • Administrateur
  • *
  • Messages: 48 042
    • Twitter LaFibre.info
Tutoriel pour chiffrer un site web gratuitement en 14 étapes simples
« Réponse #6 le: 17 juillet 2014 à 14:00:37 »
Étape 7/14 : Générer et faire signer le fameux certificat SSL xxxxx.CRT

On est reparti sur le site web de StartSSL, dans l'onglet Certificates Wizard cette fois-ci.

Sélectionner Web Server SSL/TLS Certificate dans la liste déroulante :


Important : il faut cliquez sur Skip car le fichier .CSR a été créée sur le serveur Web :


Start SSL nous demande de copier / coller l'intégralité du fichier .CSR généré à l'étape précédente sur le serveur.

Pour éditer le fichier sur le serveur en SSH, vous pouvez utiliser l’éditeur nano : nano testdebit.csr
Remplacez testdebit par votre nom de domaine.

On colle le contenu dans l'interface StartSSL en incluant la première et la dernière ligne comme dans l’exemple ci-dessous (j'ai réduit, le .CSR fait plus que 6 lignes)


Si vous avez ce message, c'est que votre CSR est accepté :


On confirme le domaine qu'il faut valider :


Il est recommandé de valider www en plus de la racine du certificat :


Ce message vous prévient qu'une validation de la cohérence des informations rentrées est nécessaire.
Généralement le certificat sera créé en moins de 2h.


Vous recevez un courriel pour vous prévenir de la création :

vivien

  • Administrateur
  • *
  • Messages: 48 042
    • Twitter LaFibre.info
Tutoriel pour chiffrer un site web gratuitement en 14 étapes simples
« Réponse #7 le: 17 juillet 2014 à 14:00:56 »
Étape 8/14 : Récupérer le certificat SSL xxxxx.CRT

On va sur le site StartSSL, dans l'onglet Tool Box et on clique sur Retrieve Certificate à gauche :


Le certificat apparaît sur le site StartSSL :


Sélectionnez l'ensemble du certificat et faire un bouton droit Copier.

Sur le serveur web à laquelle vous êtes toujours connecté en SSH, on va créer testdebit.crt :
nano testdebit.crt
Remplacez testdebit par votre nom de domaine.

vivien

  • Administrateur
  • *
  • Messages: 48 042
    • Twitter LaFibre.info
Tutoriel pour chiffrer un site web gratuitement en 14 étapes simples
« Réponse #8 le: 17 juillet 2014 à 14:01:14 »
Étape 9/14 : Suppression de la passphrase du fichier xxxxx.KEY

Pour que Apache 2.4 puisse démarrer automatiquement après un reboot du serveur, il est nécessaire que le fichier .KEY ne contienne pas de passphrase.

On va donc l'enlever avec la commande OpenSSL suivante :
openssl rsa -in testdebit_avec_passphrase.key -out testdebit.key
Remplacez testdebit par votre nom de domaine.



vivien

  • Administrateur
  • *
  • Messages: 48 042
    • Twitter LaFibre.info
Tutoriel pour chiffrer un site web gratuitement en 14 étapes simples
« Réponse #9 le: 17 juillet 2014 à 14:01:30 »
Étape 10/14 : Récupérer les certificats xxxxx.PEM de StartCom

Les 2 fichiers qu'il faut récupérer sont :
- StartCom Root CA (PEM encoded) => ca.pem
- Class 1 Intermediate Server CA => sub.class1.server.ca.pem

Ces fichiers sont les mêmes pour tous les domaines de ce type signés par StartCom.

On va sur le site StartSSL, dans l'onglet Tool Box et on clique sur StartCom CA Certificates :


On récupère le StartCom Root CA (PEM encoded) => ca.pem


On récupère le Class 1 Intermediate Server CA => sub.class1.server.ca.pem


Il faut ensuite transférer ces deux fichiers sur le serveur, dans notre dossier temporaire.

vivien

  • Administrateur
  • *
  • Messages: 48 042
    • Twitter LaFibre.info
Tutoriel pour chiffrer un site web gratuitement en 14 étapes simples
« Réponse #10 le: 17 juillet 2014 à 14:01:47 »
Étape 11/14 : Récapitulatif des 7 fichiers du dossier temporaire

Si vous avez suivi toutes les étapes, vous devez avoir 7 fichiers dans votre dossier temporaire.

Ce sont ces 7 fichiers que je vous conseille de bien sauvegarder.


Le certificat personnel de Firefox ne sera pas utilisé avant 11 mois, donc vous pouvez le supprimer pour empêcher à un visiteur d'avoir accès à votre compte StartSSL (aucun mot de passe n'est demandé, le certificat est suffisant).

Dans le menu à droite de Firefox, cliquez sur préférence, puis dans l'onglet Avancé, tout à droite et enfin dans le sous onglet certificat, cliquez sur Afficher les certificats :


Sélectionner le certificat et cliquez sur Supprimer :

vivien

  • Administrateur
  • *
  • Messages: 48 042
    • Twitter LaFibre.info
Tutoriel pour chiffrer un site web gratuitement en 14 étapes simples
« Réponse #11 le: 17 juillet 2014 à 14:02:07 »
Étape 12/14 : Configuration de Apache 2.4

sudo a2enmod ssl : Active le module SSL pour Apache 2.4
sudo a2enmod headers : Active le module headers pour Apache 2.4, nécessaire pour activer le HSTS (HTTP Strict Transport Security) dans Apache
sudo service apache2 restart : redémarre apache2 pour activer le mode SSL
sudo cp testdebit.crt /etc/ssl/private/testdebit.crt : Copie le CSR (Certificate Request)
sudo cp testdebit.key /etc/ssl/private/testdebit.key : Copie le certificat (clé privé)
sudo cp sub.class1.server.ca.pem /etc/ssl/private/sub.class1.server.ca.pem : Copie le Class 1 Intermediate Server CA
sudo cp ca.pem /etc/ssl/private/ca.pem : Copie le Copie le StartCom Root CA
Remplacez testdebit par votre nom de domaine.

On édite le fichier de configuration SSL de Apache 2.4 :
nano /etc/apache2/mods-enabled/ssl.conf

On se place a la fin du fichier, juste avant </IfModule>

copier / coller ce bloc qui configure le mod_ssl de Apache 2.4 :

        #Modif optimisaiton SSL
        SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4
        SSLProtocol All -SSLv2 -SSLv3
        SSLHonorCipherOrder On
        #SSLSessionTickets off demande Apache 2.4.11min:
        #SSLSessionTickets off
        SSLCompression off
        SSLUseStapling on
        SSLStaplingCache "shmcb:logs/stapling-cache(150000)"


On édite le fichier de configuration Apache 2.4 (je suppose que ce fichier existe déjà pour le site sans SSL).

nano /etc/apache2/sites-available/testdebit.conf

Voici à quoi il devrait ressembler pour une configuration basique si les fichiers du serveur sont dans le dossier /home/testdebit :

Configuration avant le passage au https :

# Redirection des requêtes http avec www vers le site sans www.
<VirtualHost *:80>
        ServerName "www.testdebit.info"
        Redirect permanent / https://testdebit.info/
        CustomLog ${APACHE_LOG_DIR}/redirect80.log combined
</VirtualHost>

# Hébergement du site en http
<VirtualHost *:80>
        ServerName "testdebit.info"
        ServerAdmin mail@domaine

        DocumentRoot "/home/testdebit"
        <Directory "/home/testdebit">
                Options None
                AllowOverride None
                Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
A noter qu'il faut éviter pour d'avoir un site web en double avec le www et sans le www, j'ai donc redirigé le site avec www vers le site sans www.



Voici maintenant la même configuration avec https activé par défaut :
# Redirection des requêtes http en https.
<VirtualHost *:80>
        ServerName "testdebit.info"
        ServerAlias "www.testdebit.info"

        Redirect permanent / [url]https://testdebit.info/[/url]
        CustomLog ${APACHE_LOG_DIR}/redirect80.log combined
</VirtualHost>

# Redirection des requêtes https avec www vers le site sans www.
<VirtualHost *:443>
        ServerName "www.testdebit.info"
        SSLEngine on
        SSLCertificateFile /etc/ssl/private/testdebit.crt
        SSLCertificateKeyFile /etc/ssl/private/testdebit.key
        SSLCertificateChainFile /etc/ssl/private/sub.class1.server.ca.pem
        SSLCACertificateFile /etc/ssl/private/ca.pem
        Header always set Strict-Transport-Security "max-age=63072000; preload"

        Redirect permanent / https://testdebit.info/
        CustomLog ${APACHE_LOG_DIR}/redirect443.log combined
</VirtualHost>

# Hébergement du site en https
<VirtualHost *:443>
        ServerName "testdebit.info"
        ServerAdmin mail@domaine

        SSLEngine on
        SSLCertificateFile /etc/ssl/private/testdebit.crt
        SSLCertificateKeyFile /etc/ssl/private/testdebit.key
        SSLCertificateChainFile /etc/ssl/private/sub.class1.server.ca.pem
        SSLCACertificateFile /etc/ssl/private/ca.pem
        # Utiliser HSTS (HTTP Strict Transport Security) pour forcer le navigateur a contacter le nom de domaine pendant 2ans que en https
        Header always set Strict-Transport-Security "max-age=63072000; preload"
        Header always set X-Frame-Options DENY
        Header always set X-Content-Type-Options nosniff

        DocumentRoot "/home/testdebit"
        <Directory "/home/testdebit">
                Options None
                AllowOverride None
                Require all granted
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Il y a 3 redirections :
- Je redirige le site en http avec et sans www vers le site https sans le www
- Je redirige le site en https avec le www vers le site sans www

Une fois la configuration terminée, on tape la commande sudo service apache2 reload pour recharger les fichier de configuration de Apache 2.4
En cas d'erreur, lisez attentivement le message afin de trouver la faute.

si tout se passe bien vous avez ceci :

$ sudo service apache2 reload
 * Reloading web server apache2                                                  *
$



Configuration de Apache 2.2

Il y a quelques modifications non disponibles avec Apache 2.2
Voici une configuration qui fonctionne :

<VirtualHost *:443>
        ServerName "testdebit.info"
        ServerAdmin mail@domaine

        SSLEngine on
        SSLProtocol ALL -SSLv2 -SSLv3
        SSLCompression off
        SSLHonorCipherOrder On
        SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
        SSLCertificateFile /etc/ssl/private/testdebit.crt
        SSLCertificateKeyFile /etc/ssl/private/testdebit.key
        SSLCertificateChainFile /etc/ssl/private/sub.class2.server.ca.pem
        SSLCACertificateFile /etc/ssl/private/ca.pem
        # Utiliser HSTS (HTTP Strict Transport Security) pour forcer le navigateur a contacter le nom de domaine pendant 2ans que en https
        Header always set Strict-Transport-Security "max-age=63072000; preload"
        Header always set X-Frame-Options DENY
        Header always set X-Content-Type-Options nosniff

        DocumentRoot "/home/testdebit"
        <Directory "/home/testdebit">
                Options None
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

N'oubliez pas de faire les redirections :
- pour ceux qui viennent du port 80
- pour ceux qui mettent www en plus et qui viennent du port 80
- pour ceux qui mettent www en plus et qui viennent du port 443