8. Construire des clef et des certificats RSA

OpenVPN possède deux modes sécurisés, l'un basé sur la sécurité SSL/TLS en utilisant les certificats et les clef RSA, l'autre en utilisant une clef statique pré-partagée. Tandis que les clef SSL/TLS + RSA sont discutablement l'option la plus sécurisée, les clef statiques ont le bénéfice de la simplicité. SI vous voulez utiliser les clef RSA, continuez la lecture. Pour ce qui concerne les clef statiques, sautez directement à la section Construire une clef statique pré-partagée.

Nous construirons des certificats et des clef RSA en utilisant la commande openssl, incluse dans la librairie de OpenSSL.

Les certificats RSA sont des clef publiques qui contiennent aussi d'autres champs sécurisés comme le Common Name ou l'adresse email du titulaire du certificat. OpenVPN permet l'écriture de scripts pour tester ces champs en priorité par rapport à l'authentification. Pour plus d'information, reportez-vous à l'option --tls-verify dans les pages de man de openvpn.

Dans notre exemple, nous utiliserons la convention d'apache, qui utilise les extensions de fichiers .crt pour les fichiers contenant les certificats, et les extensions de fichiers .key pour les fichiers contenant les clef privées. Le fichiers contenant les certificats peuvent être librement publiés ou distribués.

Sélectionnez une machine au Travail pour être la machine de gestion des clef.

Tout d'abord, éditez le fichier /usr/share/ssl/openssl.cnf (ce fichier peut se trouver ailleurs, donc pour le trouver, utilisez la commande locate openssl.cnf)

Vous devrez faire quelques changements dans ce fichier :

Après que openssl.cnf ait été édité, créez la paire certificat/clef_privée de votre autoriré de certificat maître.

openssl req -nodes -new -x509 -keyout my-ca.key -out my-ca.crt -days 3650

Ceci créera une paire certificat/clef_privée pour l'autorité de certification maître, paire valide pour 10 ans.

Maintenant, créer les paires certificats/clef_privées pour la Maison (fichiers office.*) et le Travail (fichiers home.*) :

openssl req -nodes -new -keyout office.key -out office.csr

openssl ca -out office.crt -in office.csr

openssl req -nodes -new -keyout home.key -out home.csr

openssl ca -out home.crt -in home.csr

Maintenant, copiez dans Maison, à travers un canal sécurisé, home.crt, home.key, et my-ca.crt, bien que pour le moment, seuls les fichiers .key doivent être considéré non-publiques.

Maintenant créer les paramètres Diffie Hellman dans Travail, avec la commande suivante :

openssl dhparam -out dh1024.pem 1024

Augmentez la taille de 1024 bits à 2048 bits, si vous l'avez auparavant augmenté dans openssl.cnf.

Pour les paranoïaques, soyez attentif à l'omission ci-dessous de l'option -nodes dans la commande openssl. Cela entraînera que chaque clef privée sera chiffrée avec un mot de passe, ce qui rendra la clef sécurisée, même si quelqu'un pénètre dans votre serveur et qu'il vole les fichiers contenant les clef privées. Le mauvais côté de cette approche est qu'à chaque fois que vous lancez OpenVPN, vous devrez tapez le mot de passe. Pour plus d'informations, reportez-vous à l'option --askpass dans la page de man de openvpn.

Si vous trouvez confuse la gestion manuelle des clef RSA, remarquez que OpenVPN peut interopérer avec les outils de gestion des certificats X509, ou avec les services proposant des CA commerciaux tels que Thawte ou Verisign. Allez voir le projet OpenCA pour un exemple de ce qui peut être fait avec la gestion de certificats/clef, dans le royaume Open Source.

De plus, la distribution de OpenVPN contient un ensemble de scripts qui peuvent être utilisés pour simplifier la gestion des certificats et des clef RSA.