Sécurisez votre site grâce au HTTPS en installant un certificat SSL valide et gratuit

Sécurisez votre site grâce au HTTPS en installant un certificat SSL valide et gratuit
02 Octobre 2014


Pourquoi installer le https ?

Le https est un protocole qui permet d'encrypter les échanges entre votre serveur et le navigateur web. Ainsi, il est impossible à un pirate de récupérer les identifiants que vous saisissez pour vous loguer sur votre site. En http, les identifiants passent en clair et sont facilement interceptables.

Il nécessite de créer un certificat SSL qui permettra d'initialiser les échanges cryptés. 

Vraiment gratuitement ?

Le protocole https nécessite un certificat SSL qui doit être signé par un organisme de certification pour être reconnu par les navigateurs.

Malheureusement la plupart du temps, ce genre de service est payant ...

Vous pouvez le signer vous-même, mais vous aurez un bel avertissement :

Erreur de certificat sous firefox

Du coup il vous faudra ajouter une exception puis importer le certificat.

Bref ... Pas très attirant ni rassurant pour vos internautes !

Grâce à StartSSL, vous pouvez signer vos certificats SSL gratuitement.

Gratuit ok mais on a quelques inconvénients :

  • Le certificat ne sera valide que pour un sous-domaine(il faudra faire 2 certificats différents pour sécuriser www.remipoignon.fr et dev.remipoignon.fr par exemple).
  • Il faudra renouveler le certificat tous les ans.
  • Seuls les cryptages en 128 et 256 bits sont supportés via le service gratuit (largement suffisant pour un site internet sans paiement ou à données trop sensibles).

Créer le certificat

Prérequis

Nous allons travailler avec un site hébergé sur un serveur Linux (avec accès root). Nous utiliserons Apache2 pour le serveur web.

Openssl doit être installé pour générer les certificats.

apt-get install openssl

 

Génération de la clé privée

On va créer une clé privée de 4096 bit encrypté avec l'algorithme de cryptage AES 256 bit.

openssl genrsa -aes256 -out certificat.key 4096

 

Entrez le mot de passe de la clé privé

Entrez un mot de passe pour votre clé (pensez à bien le conserver). Une confirmation du mot de passe vous est demandée.

On a généré une clé privée protégée par mot de passe, on va maintenant générer cette même clé mais déverrouillée.

Si vous souhaitez ne pas la déverrouiller, le mot de passe de la clé sera demandé à chaque redémarrage de Apache2.

Dans un premier temps on va renommer notre clé :

mv certificat.key certificat.key.lock

 

Puis générer notre certificat déverrouillé :

openssl rsa -in certificat.key.lock -out certificat.key

 

Saisissez le mot de passe de la clé, le fichier dévérouillé est créé.

Votre clé privée déverrouillée : certificat.key

Votre clé privée verrouillée : certificat.key.lock

Génération du fichier de demande de signature

Ce fichier va être utile pour obtenir notre certification de l'organisme ou pour auto-signer notre certificat.

openssl req -new -key certificat.key.lock -out certificat.csr

 

Renseignez les différents champs demandés comme vous le sentez. Exemple :

Génération du csr

Votre fichier de demande de signature : certificat.csr

Génération du certificat

Solution 1 : Autosigner son certificat

Cette solution vous permet d'avoir le contrôle sur la durée de vie de votre certificat et d'utiliser des cryptages plus forts que ceux autorisés par la solution gratuite de StartSLL.

En revanche, comme le certificat n'est pas authentifié par une autorité, il ne sera pas reconnu sur les navigateurs web et il y aura un message d'avertissement lorsque vous accèderez à votre site.

Pour autosigner votre certificat, exécutez la commande suivante :

openssl x509 -req -days 365 -in certificat.csr -signkey certificat.key.lock -out certificat.crt

Votre certificat : certificat.crt

 

Solution 2 : Signer son certificat via un organisme de certification.

Grâce à cette solution, votre certificat sera reconnu par les navigateurs web et votre site sera reconnu comme sécurisé avec le cadenas HTTPS.

En revanche, ce certificat ne fonctionnera que sur un sous-domaine et ne sera valide qu'un an.

Dans un premier temps, il est nécessaire d'ouvrir un compte sur StartSLL :

Rendez-vous sur StartSSL, cliquez sur Sign up puis renseignez les différents champs demandés.

Il faut maintenant valider que vous êtes bien le propriétaire du domaine que vous voulez certifier :

Une fois connecté sur le tableau de bord de StartSLL, dans l'onglet Validations Wizard, sélectionnez Domain name validation.

Saisissez votre nom de domaine.

Choisissez ensuite une adresse mail sur laquelle vous avez un accès :

 

Vous recevrez ensuite un mail sur cette adresse afin de valider votre propriété du nom de domaine.

Saisissez le code reçu :

On passe à la création du certificat :

Toujours sur le tableau de bord de StartSSL, cliquez sur l'onglet Certificates Wizard.

Sélectionnez : Web Server SSL/TLS Certificates.

StartSLL nous propose de générer notre clé privée. Nous on l'a déjà généré précédemment (hé oui ! Il y avait une manière très simple de la générer, mais c'est toujours sympa un peu de challenge ! Et puis vous êtes sûr d'être le seul à connaitre la clé pour déchiffrer le certificat.)

On clique donc sur Ship.

On copie le contenu de notre fichier de demande de certificat (certificat.csr). Attention, il faut tout copier, c'est-à-dire avec les lignes de BEGIN et de END.

On continue tranquillement.

On définit le sous-domaine du certificat.

StartSSL nous demande de confirmer la génération du certificat.

Et voilà, il ne reste plus qu'à copier le contenu dans un fichier certificat.crt.

Votre certificat : certificat.crt

Indiquer à Apache d'utiliser le certificat SSL

Première chose à faire, vérifier que le ssl est activé sur apache :

a2enmod sll

 

Il va falloir ensuite créer un vHost sur le port 443 (port du https) :

nano /etc/apache2/site-availables/tuto.conf

 

Ajoutez le contenu suivant :

    <VirtualHost *:443>

        ServerName      tuto.remipoignon.fr
        DocumentRoot    /var/www/tuto

    </VirtualHost>

On ajoute notre certificat dans le vHost :

    <VirtualHost *:443>
    
        ServerName      tuto.remipoignon.fr
        DocumentRoot    /var/www/tuto
        
        SSLEngine on
        SSLCertificateFile    /etc/apache2/ssl.crt/certificat.crt
        SSLCertificateKeyFile /etc/apache2/ssl.key/certificat.key

    </VirtualHost>

Pour finir, on télécharge la chaine de certificat de StartSSL :

wget https://www.startssl.com/certs/sub.class1.server.ca.pem

Et on l'ajoute dans le vHost.

Au final, dans votre vHost :

<VirtualHost *:443>

    ServerName      tuto.remipoignon.fr
    DocumentRoot    /var/www/tuto

    SSLEngine on
    SSLCertificateFile       /etc/apache2/ssl.crt/certificat.crt
    SSLCertificateKeyFile    /etc/apache2/ssl.key/certificat.key
    SSLCertificateChainFile  /etc/apache2/ssl.pem/sub.class1.server.ca.pem

</VirtualHost>

On ajoute le vHost dans les sites actifs:

a2ensite tuto.conf

On redémarre Apache :

/etc/init.d/apache2 restart

Terminé, votre site est maintenant en HTTPS !

 

Commentaires

Aucun commentaire