PKI familiale

De knowledge
Aller à la navigation Aller à la recherche

On créera une PKI (Private key infrastructure) qui ne sera légitime que pour nous et ceux qui ont confiance en nous!

Cette PKI utilisera des certivicats standards à la norme X.509.

Pour faire (refaire) cette page j'ai utilisé : https://evilshit.wordpress.com/2013/06/19/how-to-create-your-own-pki-with-openssl/ [EN] je remercie ses auteurs.

La certificat "racine" CA

Sur une machine sécurisée on va créer les fichiers nécessaires.

On crée un répertoire sécurisé ~/mypki

Dans ce répertoire on va créer la clé privée. On fait le travail en deux temps :

openssl rand -out .randRootCA 8192                # Un fichier contenant 8192 octets au hasard
# OU BIEN
dd if=/dev/random of=.randRootCA bs=1 count=8192  # Fait la même chose mais on a dit qu'on utilisait openssl

On crée un fichier contenant 8192 octets de façon aléatoire. Je n'ai pas d'opinion sur la meilleure méthode. (je penses même qu'en fin de compte ça fait la même chose)

Ensuite on crée la clé privée en utilisant le "hasard" de ce fichier.

On passe par ce fichier car, dans certains cas, l'ordinateur sur lequel on générera la clé n'a pas "l'entropie" pour faire de réels nombres aléatoires. Le fichier poura alors être généré sur une machine plus puissante et envoyé a notre machine sécurisée.

Pour créer la clé RSA deux possibilités.

  • Créer une clé chiffrée
  • Créer un clé "en clair"

Si ma machine qui l'héberge est suffisamment sécurisée et si la clé restera sur cette machine il devient inutile de la chiffre (ou alors on est très parano) en revanche dans le cas ou on est plusieurs à l'utiliser ça peut avoir un sens.

openssl genrsa -out rootca.key -rand .randRootCA   # Sans chiffrement
openssl genrsa -out rootca.key -rand .randRootCA -aes256 2048 # avec chiffrement

Dans le second cas on nous demande la clé (deux fois)

REMARQUE
Attention.png
J'utilise une clé de 2048 bit de long. Rien ne nous empêche de faire plus (4096, 8192 on choisit des puissances de 2) mais les performances en seront entachées et certains pays l'interdisent. Dans tous les cas il FAUT garder cette clé à disposition de la justice pour rester dans la loi française (en 2023). Pour d'autres législation où plus tard en France.... se référer à la loi.

Si la clé à été crée chiffrée un simple cat ne nous la montre que chiffrée:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-256-CBC,139BD1B207E1FCBE4B53B0A8EBE03897

zfV6RP37mezCdp4OJXo0wMLcd66cBc5l2D5O3K5GMKd+TzYIxSadE8DgLptxAwTc
nAPrDkjecbRvcSaUZtNYzexU2bO/gbAtJngbe4FuhSEtFvuMBJEdj7Q6eSJWgDLP
.
.
l/1plgmnP1APIxpXpQgGqMNeDHfy/4Nb8+kZFeU7Au8r5nGrKHpVjpn1FgTJ9BlI
slxs/5dHWPxWQGXWe9mLwuSKZu3Y23zolQtzVcilUMhNreFFER8E+3kZk3oAKm+C
-----END RSA PRIVATE KEY-----

pour l'avoir en clair (et tester sa passphrase) on doit utiliser :

openssl rsa -in rootca.key -check

Qui nous demande la passphrase et ensuite seulement nous affiche la clé déchiffrée

-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAvcP/ROuhziRbVM+edsULTMgyJd1zf13TK54P5vVCK7wa0Hkd
qhIjvqplgkYbUOlZsFykvhC+pIvIK3Jxf3+ImHfW2OfaP9oSyjdahrifH0OnIb44
21QY9B18HZWhWbDCJDbjGSisiPW44GRL6w/+3bDADhbA1OQs3wt20O/llh+cz6Kd
.
.
c+ffGLgFAoGAbihtvPuom18KzqFx2DMx3AYsivm6oXm0d6CU+fdnpvC8Tc8T8pTh
eQBxB7EzppSpIIeSvvb3ZDL4I4LUasXb7xpyCcC0R1gSVPC9ZQDFrJk9YRZrpdCA
gJ4hyiPF8/nYMTJjds9F0sJG81ZWrfh451hmHBHgBGLAjZCuQ+tSdYY=
-----END RSA PRIVATE KEY-----

Nous avons notre clé "maitre". Maintenant on a vu qu'un certificat c'est une clé additionné de métadonnées signée par une autre clé. La particularité d'une CA est que sa clé est signée... par elle même.

openssl req -new -x509 -days 3650 -key rootca.key -out rootca.crt

Le paramètre -days donne la durée de validité de notre CA. Ici 10 ans.

Si la clé était chiffrée il faut en donner la passphrase.

ensuite des questions vous sont posées:

Question Réponse exemple
Country Name (2 letter code) Le code iso à deux lettres de votre pays FR
State or Province Name (full name) Pour un français ça n'a pas vraiment de sens. IDF
Locality Name (eg, city) La Ville ou est situé l'entité certificatrice Paris
Organization Name (eg, company) Nous ne sommes pas une entreprise... Famille DUPONT
Organizational Unit Pour un PKI familiale ça devient lourd SECU
Common Name C'est le nom qui nous identifiera aux autres. Rendons le "parlant" CA Famille DUPONT
Email Address L'email à contacter en cas de question.

(C'est là par exemple que viendrons d'éventuelles réquisitions judicaires par exemple)

secu@famille-dupont.info

le certificat est crée.

Dans notre cas on pourra, par exemple, le mettre dans les CA acceptées des navigateurs de notre famille!

On pourra afficher, en clair, les informations de ce certificat par :

openssl x509 -in rootca.crt -text -noout

On voit que les "Métadonnées" de la clé et celles de son signataires sont les mêmes. C'est logique puisque nous sommes "autosignés".