Votre blog avec de vrais morceaux de SSL !

CAcert-logo-colour-1000

Avoir un vrai certificat signé et approuvé par une autorité de certification SSL, c’est un peu le Graal pour le geek !

Mais voilà, ça coûte souvent (très) cher, pas toujours évident à mettre en place …

Voici donc une méthode simple pour avoir vos propres certificats (oui oui, au pluriel !) @ home et cela gratuitement (c’est la crise ma brave dame !).

I) Inscription sur cacert.org

Commencez par vous inscrire sur https://www.cacert.org/ (certains me diront, qu’il y a startssl qui propose aussi des certificats, mais c’est un vrai parcours du combattant pour s’y inscrire …)
Vous aurez un formulaire à remplir de ce type, attention toutes les infos doivent être vraies ! (car si vous souhaitez aller plus loin, il faudra fournir des pièces d’identités officielles)

Capture d'écran - 27012015 - 13:22:48

 

II) L’interface d’administration

Une fois inscrit, et que vous avez validé les mails …
Vous avez accès au menu suivant :

Capture d'écran - 27012015 - 13:28:13

Vous pouvez vous dès à présent générer un certificat client puis l’installer dans votre navigateur, pour vous connecter plus tard sur cacert.org (ce que je vous recommande et ce qui est même obligatoire si vous souhaitez passer des tests, devenir accréditeur …)

C’est sur ce menu que vous allez générer vos différents certificats, rajouter des domaines, modifier des options …

Mais aussi, pouvoir demander à être accréditer, c’est important, car de base, vous avez 0 points, avec ce nombre bien maigre, vous allez tout de même pouvoir générer vos certifs, mais ils ne seront valident que 6 mois !!

Un poil fatiguant, je vous l’accorde !

Une fois que vous aurez été validé physiquement et à l’aide d’au moins deux pièces d’identités, vous allez obtenir des points.
le premier pallier (la liste complète est ici : https://wiki.cacert.org/FAQ/Privileges ) est à 50 points et vous permets d’avoir des certificats valident 24 mois.

Vous trouverez la liste des accréditeurs proches de chez vous à partir du menu, il y en a un peu partout en France, et il y également des sessions de signature dédiées à ça plusieurs fois par an.

 

 

 

III) Créer son premier certificat

M’enfin revenons à notre mouton, pour le créer (le certificat hein !), il faut commencer par rajouter un domaine dans le menu « Domaines », une fois validé (avec une simple vérification par mail), vous aurez une liste ce ce type :

Capture d'écran - 27012015 - 13:44:17

L’étape suivant se passe sur votre serveur :

On installe le paquet pour générer les clés et les demandes :

apt-get install openssl

Puis on génère une clé (le fichier key) :

openssl genrsa -out server.key 2048

Et enfin une demande de signature (le csr)

openssl req -new -key server.key -out server.csr

Attention à bien répondre aux questions !

retournez sur cacert.org, et ajouter un certificat serveur grâce au menu du même nom (ils ont bien fait les choses !)
puiscollez y votre fichier CSR

Capture d'écran - 27012015 - 13:54:47

Il vous reste à choisir le type de hachage et à valider !
à l’étape suivante, vous aurez votre certificat, que vous aurez à coller sur votre serveur dans le fichier server.crt

nano server.crt

Vous aurez un résumé de ce type :

Capture d'écran - 27012015 - 13:58:27

IV) Modifier votre serveur web

Votre certificat étant créée et validé, vous avez plus qu’à l’utiliser !
voici un exemple sur un serveur web nginx (avec fastcgi) :

nano /etc/nginx/sites-enabled/default-ssl
server {
    root /var/www/;
    listen       443;
    server_name www.sheldon.fr;
    index index.php index.html index.pl;

#ssl
        ssl on;
        ssl_certificate /etc/nginx/ssl/www.sheldon.fr.crt;
        ssl_certificate_key     /etc/nginx/ssl/www.sheldon.fr.key;

location /nginx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    deny all;
}
    server_name_in_redirect off;
    port_in_redirect off;

    location ~* ^.+\.(jpg|jpeg|gif|css|png|js|ico)$ {
        access_log        off;
        expires           30d;
    }

    # rewrite rules
    location / {
        if (!-e $request_filename) {
            rewrite  ^/(.*)$  /index.php?q=$1  last;
        }
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include /etc/nginx/fastcgi_params;
    }

}

Et si vous souhaitez que votre port 80 redirige automatique sur le port 443, faites la modif suivante :

nano /etc/nginx/sites-enabled/default
server {
    listen       80;
    server_name www.sheldon.fr;
    return 301 https://www.sheldon.fr$request_uri;
}

Après avoir redémarré votre serveur web, et consulté votre magnifique site, voici ce que vous obtiendrez (et sans erreur obscure de votre navigateur !)

Capture d'écran - 27012015 - 14:11:00 Capture d'écran - 27012015 - 14:09:42

Alors, happy ? 🙂

Il vous reste plus qu’à faire comme moi et rajouter un certificat par service (messagerie, hébergement divers, xmpp …) et sans oublier de vous faire accréditer !!

25 Responses to “Votre blog avec de vrais morceaux de SSL !”

  1. David dit :

    Bonjour Sheldon,

    Perso quand j’accède à ton site en https j’ai un avertissement de sécurité (Firefox & Chromium)

    The certificate is not trusted because the issuer certificate is unknown. (Error code: sec_error_unknown_issuer)

    http://dl.zici.fr/filestore/e9/WtwgAKlt72.Erreur_liée_à_la_confidentialité_–_Chromium_075.jpg._

    Voilà voilà…

    Belle journée,

  2. PapsOu dit :

    Pareil que David, ton certif n’est pas valide.

    J’ai un certif chez StartSSL, et il n’était pas valide car il fallait le « concaténer » avec le certif de base de StartSSL. Est-ce qu’il faut que tu fasse cette manip également chez CACert ?

    Je confirme que CACert est un provider géré par Firefox

    A noter également que Linux-fr utilise un certif CACert qui me demande aussi l’ajout d’une exception de sécurité. Donc à première vue, les certifs CACert ne sont pas reconnus directement par les browsers.

    Donc perso je privilégierai StartSSL plutôt que CACert

    • Sheldon dit :

      Bon la prochaine fois que je veux écrire un article, j’y réfléchis à deux fois ^^

      étrange j’ai pas du tout le même comportement chez moi, je vais tenter avec un certif chaîné avec le rootca de cacert

      pour StartSSL j’aimerais bien m’y inscrire et même acheter un wildcard, mais encore faut il pouvoir s’inscrire, ce qui n’est pas possible :/

  3. Olivier dit :

    Salut, c’est normal qu’il y ait des soucis, l’autorité CACert n’est plus dans le magasin de certif de Firefox. Je te suggère de lire ce paragraphe dans Wikipédia (et les références associées) :
    http://fr.wikipedia.org/wiki/CAcert.org#Inclusion

    • Sheldon dit :

      c’est bien dommage, merci pour l’info
      il me semblait avoir lu un article sur linuxfr concernant Debian, mais je n’en savais rien pour les navigateurs 🙁

  4. Bonjour Sheldon,

    Pour que les gens n’aient pas le message de Certificat SSL invalide il faut qu’ils aient aussi le Certificat de la root CA de Cacert.org dans leurs Personnal Store sous le noeud « Trusted root CA », directement dans leur ordinateur.
    Le root certificat ce trouve ici: https://www.cacert.org/index.php?id=3

    Presque comme une Root CA personnel au final …
    Personnellement j’ai abandonné Cacert.org pour passer sur ma propre CA à la maison et avec le recul c’est presque plus pratique et accessible.

    • Sheldon dit :

      Bonjour Thomas,
      merci pour la réponse.
      Qu’est ce que tu appelles « passer sur ma propre CA » ?

      • Olivier dit :

        Tu fabriques ta propre autorité de certification, ce qui te permet d’émettre tous les certificats que tu veux. Avec un simple openssl, c’est pas (trop) compliqué.
        Tu génères une certificat racine, celui qui représente ta CA, puis à partir de là, tu peux émettre des demandes (req) que tu fais signer par le certif racine, et tu obtiens ton certificat serveur. Voilà en gros. Tu trouveras des tutos en ligne assez facilement.

  5. Damien dit :

    Personnellement, j’utilise https://www.startssl.com/ qui je trouve mieux (plus accessible) que cacert. J’ai tous mes certificats chez eux.

  6. Tarlak dit :

    Et pourquoi ne pas passer par Gandhi ? il me semble qu’il donne gratuitement au moins un certificat sans forcement que ce soit eux qui gère le nom de domaine.

    Je l’avais fait pour la partie admin de mon site et ça à bien fonctionné

  7. VALLEE dit :

    Bonjour,

    J’ai remarqué le commentaire d’Olivier (28 janvier 2015 à 9 h 35 min), qui propose de générer sa propre autorité de certification, mais je me pose alors la question : comment les client web vont-il autoriser cette autorité, je ne suis pas sûr de bien comprendre la solution proposée.

    Sheldon, au final de quelle facon géneres-tu ton certificat ?

    Merci.

Laisser un commentaire

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