Journal Scripter la génération de certificat

Posté par . Licence CC by-sa
Tags :
7
7
oct.
2014

Cher journal,

Internet ne m'a pas beaucoup aidé à trouver une réponse simple et complète à cette question, alors permets moi de te détailler la solution.

La mise en place d'une AC auto-signée est relativement aisée. Il existe plein de tutoriaux sur internet, celui-ci étant par exemple très clair et didactique.

En lisant le man, tu noteras qu'il faut mettre l'AC dans /usr/local/share/ca-certificates sur les systèmes à base Debian afin qu'elle soit ajouté automatiquement en tant qu'AC dite de confiance

Pour générer automatiquement un certificat, tu peux utiliser et adapter le script ci-dessous:

    #!/bin/bash

    if [ "x$1" = "x" ] ; then
            printf "USAGE:\n  $0 myserver.my-company.lan" 1>&2
            exit 1
    fi

    openssl req -new -nodes -batch -newkey rsa:4096 -keyout private/$1.key \
      -out csr/$1.csr -config my-ca-config \
      -subj "/C=FR/ST=AQUITAINE/L=BORDEAUX/O=My Company/CN=$1/emailAddress=certificates@my-company.com"
    openssl ca -passin file:ca.pass -batch -config my-ca-config \
               -policy policy_anything -out certs/$1.crt -infiles csr/$1.csr

    echo "Your private key is here: private/$1.key"
    echo "Your public key is here: certs/$1.crt"

Pour qu'il fonctionne, tu dois créer (et sécuriser l'accès) à un fichier ca.pass contenant en première ligne la pass phrase de ton AC.

Notes

  1. Un fichier de réponse ne marche pas sur la commande openssl req, seule l'option batch et la ligne complète du sujet fonctionnera
  2. Même en 2014, l'option -passin ne fonctionne que si elle est la première option de l'appel à openssl ca.
  • # CA reconnue, mais pas partout

    Posté par (page perso) . Évalué à 1.

    À ma connaissance, la CA ne sera pas reconnue comme de confiance par Firefox ou Chrome.

    • [^] # Re: CA reconnue, mais pas partout

      Posté par . Évalué à 1.

      Je confirme.

      Il faut ajouter manuellement la clé publique de l'AC dans son navigateur si on souhaite faire ce genre d'usage.

      Pour chiffrer les communications entre logiciels serveurs, là par contre, ça marche et ça évite la possibilité d'attaque par l'homme (de la terre) du milieu.

    • [^] # Re: CA reconnue, mais pas partout

      Posté par (page perso) . Évalué à 3.

      Pour Chrome je ne sais pas, mais pour Firefox, Thunderbird et les autres programmes utilisant les bibliothèques NSS, il y a p11-kit pour faire en sorte que tous ces programmes utilisent les certificats racines du système au lieu d’avoir leur propre magasin.

  • # Question de condition (je sais, ce n'est pas le plus important)

    Posté par . Évalué à 7. Dernière modification le 07/10/14 à 22:46.

    Pourquoi ne pas utiliser [ -z "$1" ] à la place de [ "x$1" = "x" ] ?

    • [^] # Re: Question de condition (je sais, ce n'est pas le plus important)

      Posté par . Évalué à 1.

      J'ai déjà vu des scripts utilisant [ x$1 = x ] (sans les guillemets)

      J'avais trouvé comme explication : si tu mets comme test [ $1 = "" ], le test va échouer si $1 est vide (après interprétation par le shell, le test va lire [ = "" ], ce qui ne veut rien dire)
      Du coup certains contournaient le problème en mettant [ x$1 = x ]. Mais [ "$1" = "" ] ou [ -z $1 ] fonctionnent très bien (et tu peux même mettre [ -z "$1" ] si tu as peur).

  • # My 2 Cent

    Posté par (page perso) . Évalué à 2. Dernière modification le 08/10/14 à 09:14.

    J’ai scripté un outil permettant de générer une CA, des cirtificats signés par cette CA ou autosignés et des certificats "utilisateurs".

    Here : https://github.com/Leryan/genssl

    Et pour l’acceptation de la CA dans le système Debian, ne pas oublier de lancer update-ca-certificates

    Love – bépo

  • # Viens jouer avec moi ^^'

    Posté par . Évalué à 1.

    https://github.com/jadjay/python-easy-pki

    ;)

    "Gentoo" is an ancient african word, meaning "Read the F*ckin' Manual". "Gentoo" also means "I am what I am because you all are freaky n3rdz"

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.