TinyCA

De OpenWikiBSD
Aller à : navigation, rechercher

Installation sous Debian Sarge ou Etch

Pas trop difficile, c'est un paquet officiel :

apt-get install tinyca

Le binaire se nomme /usr/bin/tinyca2.

Usage

Création du certificat racine ( de l'AC)

On commence par créer le certificat racine de la pki : celui de l'AC (autorité de certification)

CAcreation.jpg

faites très attention aux points suivants :

  • C'est probablement le seul certificat que vous ne pourrez pas changer,révoquer.. Par conséquent, sa durée de validité doit être assez longue pour vous. Ici j'ai pris 10 ans
  • MD5 n'est plus considéré comme un algorithme de hashage fiable. Utilisez SHA-1 plutôt.
  • Le mot de passe de l'AC est un des points les plus sensibles de votre chaîne de certification; donc en dehors phases de test, pas de mot de passe de 4 lettres commençant par 'to' et finissant par 'to' ;-)

Vous vérifiez que les usages de ce certificat vous conviennent; personnellement je n'ai pas modifieéles valeurs par défaut, à l'exception de l'URL de la CRL (liste de révocation de certificats)

CAconf.jpg


Après avoir validé, le CPU se met à chauffer lors de la génération de la biclé :

RSAkey.jpg

Votre certificat est créé :

CAcree.jpg

En voici tous les détails :

CAdetails.jpg

Une fois ce certificat racine créé, il faut le publier pour que les clients l'incorporent à leur magasin de certificats d'autorités racines de confiance.

Sous apache 1.3 il faut décommenter la ligne :

  1. AddType application/x-x509-ca-cert

et ajouter comme extension le type pem, ce qui donne :

AddType application/x-x509-ca-cert .pem 

apachectl stop && apachectl start(ssl)

Et, en cliquant sur le bon lien, vos navigateurs ou courielleurs vont faira apparaitre ce genre de boite de dialogue :

DL AC.png

En français ça marche aussi ;-)

A partir de maintenant, plus jamais de message abscons qui inquiète l'utilisateur..

Création d'un certificat serveur

Il faut créer une CSR (requête de signature de certificat).

Ca se fait sur le serveur lui-même (c'est plus simple amha) ou par l'interface. dans les deux cas il y aura un fichier (csr ou crt) à recopier en scp.

Csr.jpg

Le plus important est le Common Name du serveur, son FQDN (son nom complet qualifié) . Vous devez avoir le même résultat dans ce champ et dans une requête http(s) sinon vos navigateurs vont hurler.

Remarquez que j'ai diminué la longueur de clé. Il s'agira d'un compromis sécurité du protocole/surcharge (CPU&bande passante). En tout état de cause, il est inutile de spécifier une longueur de clé supérieure à celle de l'AC,amha.


Vous devez maintenant signer cette requête avec le certificat de l'AC (bouton sign ou clic droit sur le certificat de serveur):

CSRsignature.jpg

On donne le mot de passe de l'AC ainsi que le nombre de jours de validité du certificat du serveur. (celui-là pourra être modifié relativement facilement).

CSRsigne.jpg

Le certificat au format .pem est stocké dans $user/.TinyCA/Nom_de_l_AC/newcerts/compteur.pem où compteur est le numéro incrémental du certificat créé.

Export de clé

Pour installer le certificat , vous devez commencer par exporter la clé (clic-droit) puis choisir d'exporter :

* Au format pem

  • Sans passphrase
  • En incluant le certificat

C'est vraiment important ! without passphrase et include certificate ..

Pour OpenBSD il faudra exporter la clé ET le certificat (au format PEM en incluant la clé et l'empreinte)

Vous avez droit un joli message d'avertissement : Capture17.png

Où on les place ces fichiers ??

Le résultat doit être copié sur le serveur web/SSL au bon endroit.

Debian - Apache

Voir :


Debian/Ubuntu - Munin
  • La clé de serveur au format .pem, sans passphrase, avec le certificat dans /etc/munin/SRV.key.pem.
  • Le certificat de serveur au format .pem, avec la clé, avec l'empreinte dans /etc/munin/SRV.crt.pem.
  • Le certificat au format .pem de l'AC dans /etc/munin/ca.crt.pem.
OpenBSD - Apache
le fichier XXX-key.pem dans /etc/ssl/private et le fichier XXX-cert.pem dans /etc/ssl

Vérification :

# grep SSLCertificateKeyFile  /etc/apache-ssl/httpd.conf 
SSLCertificateKeyFile /etc/apache-ssl/apache.pem
OpenBSD - Dovecot

Le certificat dans /etc/ssl/dovecotcert.pem

  • With Key
  • With Fingerprint

La clé associée dans /etc/ssl/private/dovecot.pem

  • Without password
  • With certificate
OpenBSD - OpenVPN serveur

Le certificat dans /etc/openvpn/vpn.pem

  • With Key
  • With Fingerprint

La clé associée dans /etc/openvpn/vpn.pem

  • Without password
  • With certificate

Création d'un certificat client

Pour OpenVPN

  • apt-get install openvpn
  • Créer une CSR (Onglet Request) avec (facultatif, mais pratique) un CN(Commmon Name) égal au nom FQDN du client.
  • Signer la rquête (Clic droit/Sign Request/Sign Client) en fournissant le mdp de l'AC.
  • Onglet Certificates : Export Certificates => Format PEM, Include Key (PEM) : YES, Include Fingerprint : YES
  • Copier la clé sur le client dans /etc/openvpn/client.pem

Révocation d'un certificat de serveur

Plusieurs raisons pourraient entrainer la révocation du certificat de serveur web,ie  : la rupture de la chaîne de confiance entre l'AC et le serveur :

- compromission de la clé du serveur

- compromission de la clé de l'AC (là vous êtes assez mal..)

- Changement d'affectation du serveur

- Remplacement du serveur

- Fin des opérations du serveur

- Certificat annulé

....Il s'agit là de la traduction de la boite de dialogue, mais personnellement je confond plusieurs de ces items.

Evidemment il vous faut le mot de passe de l'AC:

Ici j'ai choisi de déclarer le serveur web vieuxweb comme bon pour la casse.

Revocation.jpg

C'est fait le serveur web vieuxweb n'est plus de confiance.

Revoque.jpg

Ne reste plus qu'à publier les bans (pardon la liste de révocation).


CRL

OCSP

| Biblio La source d'info du repondeur OCSP est la crl prédéemment générée.


Publication de la liste de révocation d'un certificat de serveur

Vous devez, depuis l'onglet CA, générer la liste de révocation, en donnant le mot de passe de l'AC et en choisissant un des 3 formats d'export:

- PEM:

- DER:

-TXT:

CRL.jpg

Debug

  • Si vous rencontrez des soucis de connexion, tels que :
    • Pour Munin en TLS
[ERROR] Could not verify CA: Subject Name: undefined
Issuer  Name: undefined

ou bien

Vérifiez bien votre chaîne de certification: (Depuis l'AC racine jusqu'à client/serveur terminal en passant par les AC intermédiaires éventuelles)

Exemple de chaine brisée : openssl verify -CAfile cacert.pem -verbose dirac.crt.pem

dirac.crt.pem: C = FR, ST = IdF, L = RP, O = Ma_pomme_Corp, CN = Schwarz_PKI
error 2 at 1 depth lookup:unable to get issuer certificate

Exemple de chaine correcte :

openssl verify -CAfile /root/AC_Schwarz-cachain.pem -verbose dirac.crt.pem 
dirac.crt.pem: OK

Deploiement automatique du certificat de l'AC sur votre parc de clients windows

Pour IE

J'ai trouvé l'info | ici, mais comme je suis un peu flemmard, j'ai simplifié et 'clickidromisé le tout' ;-)

  • Commencez par télécharger le certificat de l'AC sur la machine locale. Attention, il faudra être admin local.
  • Dans une console cmd :certmgr.msc
  • Cliquez sur Autorités de certification Racine, onglet Certificats
  • Sélectionnez Toutes les taches, puis Importer
  • Parcourez l'arborescence et choisissez le .pem que vous venez de télécharger. Par défaut les .pem ne sont pas acceptés, mais ça marche très bien quand même.
  • Je laisse le choix par défaut : Tous les certificats dans le magasin suivant :, et Autorités de certification racine de confiance.MAIS vous devez choisir le magasin physique afin de déployer ce certificat pour l'ordinateur local (HKLM) et non dans dans le magasin du l'utilisateur (HKCU).

Magasin.png

  • Une boite de dialogue vous informe des implications du prochain clic de souris :

Ac Windows.png

  • Voila, votre certificat d'AC est dans la machine; reste à l'exporter pour le déployer. Cliquez sur Détails du certificat de votre AC et descndez jusqu'à empreinte numérique. le fingerprint de la clé que vous voyez est le nom sous lequel sera manipulé votre certificat par le magasin Windows. Copiez le dans le pressepapier.
  • En ligne de commande : reg export HKCU\Software\Microsoft\SystemCertificates\Root\Certificates\Votre_Empreinte_de_Certificat Mon_AC.reg

Le tout sans espace dans l'empreinte. (ça doit pouvoir se faire sans les effacer à la main..)

Où il vous est répondu que l'opération s'est bien déroulée.

  • Autre possibilité: Exporter le bout de ruche avec les outils qui vont bien :

RegAC.png

  • Ca se termine. Ne reste plus qu'à déployer sur les clients (par GPO, par descente de clés de registre...) le .reg crée.

A la main, ça donne : reg import Mon_AC.reg

J'ai trouvé | certimport qui permet d'automatiser la seconde partie de la manip. Mais comme je ne souhaite pas faire reposer des fonctions cruciales de sécurité sur un soft inconnu, et comme cette seconde partie est aussi rapide par la méthode proposée, je m'en tiendrai là.

Pour Outlook Express

Au moins ça m'aura donné une occasion de l'installer ;-)

Ben, une fois fait pour IE, c'est déja fait.

Pour Firefox

Encore plus facile:

  • Vous installez à la main le certificat sur une machine.
  • Vous recopiez maintenant le fichier c:\Documents and settings\User\Application Data\Mozilla\Firefox\Profiles\XXXXXYYYY.default\cert8 sur le profil de chacun des utilisateurs de votre réseau.
  • On note donc les soucis suivants :
    • C'est une méthode bourrin qui écrase la liste sans ajout une AC de manière incrémentale.
    • Surtout, c'est lié à l'utilisateur et non à la machine...

Pour ThunderBird

Il faut le refaire, les stockages de Ffox et Tbird sont différents.


Même manipulation que pour Ffox, on change juste le chemin.