Garder l'autorité

Publié le 05 octobre 2007 par Peck
Retrouvez l'autorité sur http://linux-attitude.fr/post/Garder-lautorite

Niveau
:
Résumé : openssl

Je vous propose de devenir votre propre autorité de certification.

Pour quoi faire ?

En général une autorité de certification permet de garantir à un utilisateur lambda que le certificat que vous allez lui présenter correspond bien à ce que vous prétendez et ce sans devoir chercher à le vérifier lui-même. Pour que cela fonctionne, il faut que le client en question fasse déjà confiance à cette autorité.

Or si vous êtes votre propre autorité, personne ne vous fera confiance. En fait ceci n'est utile que dans deux cas. Le premier pour faire des tests sans devoir payer (relativement cher). Le deuxième pour avoir des certificats SSL sur un parc de clients que vous pouvez maitriser. Par exemple sur un intranet pour pouvez exiger des clients qu'ils installent votre autorité.


Comment faire ?

Créez votre propre clé privée :
$ openssl genrsa -des3 -out ca.key 2048

Créez votre demande de certificat
$ openssl req -new -key ca.key -out ca.csr
# vous avez le droit à ce que vous voulez dans le CN

Signez le certificat par lui-même :
# longue durée
$ openssl x509 -req -days 3650 -in ca.csr -signkey ca.key -out ca.crt

Bravo ! Vous avez maintenant un certificat que vous pouvez utiliser pour signer tous vos autres certificats. Le certificat est dans ca.crt et sa clé privée dans ca.key.


Signer des certificats

Maintenant faites les différents certificats pour votre organisation.

Créez une clé sans mot de passe pour utiliser sur les serveurs :
$ openssl genrsa -des3 -out server.key 1024
$ openssl rsa -in server.key -out server.key

Faites une demande de certificat :
# utilisez votre nom de domaine comme CN
$ openssl req -new -key server.key -out server.csr

Signez votre certificat avec votre autorité :
# -CAcreateserial n'est plus nécessaire après le premier appel
$ openssl x509 -req -in server.csr -out server.crt -CA ca.crt -CAkey ca.key -CAcreateserial

Et vous avez votre nouveau certificat signé par votre autorité dans server.crt et sa clé privée directement utilisable dans server.key (sans mot de passe pour utilisation directe sur un serveur).


S'installer comme autorité

Il est temps que vos utilisateurs vous fassent confiance. Pour cela distribuez votre fichier ca.crt et ajoutez le à vos navigateurs.

Dans firefox 2 :
  • Outils -> options -> avancé -> chiffrement -> afficher les certificats -> autorités -> importer
  • Puis sélectionnez votre certificat et utilisez pour les site web.

Sur inter net explorer 6 :
  • Outils -> options internet -> contenu -> certificats -> autorités principales de confiance -> importer

Si votre navigateur refuse le format x509, proposez lui du pkcs12
$ openssl pkcs12 -export -in ca.crt -nokeys -out ca.p12

Pour les autres navigateurs, si vous avez une procédure différente, je suis preneur.


Sécuriser un serveur

Ajoutez à un virtualhost (de préférence disponible sur le port 443)

SSLEngine on
SSLCertificateFile /srv/certs/server.crt
SSLCertificateKeyFile /srv/certs/server.key

Et n'oubliez pas de charger le module ssl si besoin.


PS : Si vous voulez une autorité sympa, pas cher et qui a une chance d'être sur la plupart des navigateurs un jour, il y a cacert.org qui pourrait vous convenir. L'obtention de certificat se fait à travers un réseau de confiance. Vous devez être parrainé pour pouvoir en obtenir. Mais cacert permet aussi de délivrer des certificats sur des vérifications faites sur votre domaine.