TOTAL
Depuis Dec 2006
1'942'871 Visiteurs
4'218'042 Pages

Stats Nov 2010
82'909 Visiteurs
146'476 Pages
196 pays
Statistiques completes



Aidez-nous à traduire
nos tutoriaux!

REJOINGNEZ
l'équipe OpenManiak.
OPENVPN - Le Tutorial Facile - PKI

OpenVPN SSL & PKI
Dernière modif: Feb 28 2008


Outil
Installation
Ergonomie
Forum



Détails OpenVPN, c'est quoi?
Captures d'écran
Prérequis & Installation
Tutorial OpenVPN
-----MODE DE SECURITÉ -----------
Tunnel transparent
Clef statique
SSL & PKI (certificats)
-----ÉTUDE DE CAS-----------
VPN IP (TUN)
VPN Ethernet (TAP)
Configurations VPN avancées
----------------
Bridging
Routing



⚠️⚠️⚠️
Please check our website about
attractions in Western Switzerland !! (Please use english translation).

⚠️⚠️⚠️
Merci de consulter notre site sur les
activités à faire en Suisse romande !!



Infrastructure à clés publiques (PKI):

La PKI est un groupe d'équipements physiques utilisé pour créer des certificats numériques qui serviront à lier la clef publique d'un utilisateur à sa vraie identité.

Concept:

Le concept de la PKI (aussi appelé cryptographie asymétrique) est basé sur le fait que chaque élément possède un set de clef privée et publique. SSL va utiliser la PKI pour authentifier les équipements OpenVPN avant de transmettre des données chiffrées.

Clefs privées et certificats:

La clef privée d'un équipement est gardée secrète et sa clef publique est publiquement diffusée par l'intermédiaire de certificats.
Le but d'un certificat et de certifier qu'une clef publique appartient bien à la personne qui prétend en être le propriétaire (c'est-à-dire la personne détenant la clef privée correspondante).
Sans certificat, vous ne pouvez pas être sur qu'une clef publique corresponde vraiment à la personne possédant la clef privée correspondante.

Autorité de certification (CA):

Pour certifier son identité, un certificat est signé par une autorité dont tout le mode peut faire confiance: L'autorité de certification (CA).
Certaines compagnies ont fait de la vente de certificats leur fond de commerce comme VeriSign (Numéro 1) ou Comodo (Numéro 2).
Il est également possible de créer une autorité de certification interne dans un réseau interne pour des tests comme nous allons le faire dans notre tutorial.

Certificat du CA (Autorité de certification):

Le CA signe des certificats avec sa clef privée et publie sa clef publique à tout le monde sous la forme d'un certificat (le certificat du CA est signé pas sa propre clef privée).

Par exemple, vous pouvez vérifier vos certificats venant des autorités de certifications (aussi appelé certificats racine, "root certificates" en anglais) sur votre navigateur web. (cliquez sur les liens web pour voir des captures d'écran)
Opera 9:


FireFox 2:
IE 7:
 
Outils -> Préférences -> Onglet Avancé -> Sécurité -> Gérer les certificats Onglet Autorités.
Outils -> Options -> Avancé -> Onglet Chiffrement -> Afficher les Certificats -> Onglet Autorités.
Outils -> Options Internet -> Onglet Contenu -> Certificats -> Autorités principales de confiance.
Clef privée et création de certificat:

Le client crée d'abord avec l'algorithme RSA, une clef privée et un fichier de requête de certificat. Ce fichier est envoyé au CA qui va créer le certificat du client et le renvoyer à celui-ci.

Dans notre scénario, nous allons utiliser un processus plus simple comme nous sommes dans un laboratoire isolé.
La clef privée du client est créée sur la machine du CA, dans le même temps que le certificat. Le client n'a plus besoin dênvoyer un fichier de requête de certificat au CA.
La clef privée et le certificat du client sont transférés du CA au client.
Bien-sûr, cette façon de créer les certificats doit être uniquement utilisée dans des environnements de test pour des raisons de sécurité, la clef privée pouvant être capturée pendant son transfert.
Dans le premier processus descrit plus haut, la clef privée ne quitte pas la mcahine du client.

Utilisation des clefs asymétrique:

Deux éléments appelés Alice et Bob sont utilisées pour illustrer l'utilisation des clefs asymétrique.

-
 
 
 
 
-
 
 
 
 
 
-
 
 
Pour signer un document
Alice signe un fichier avec sa clef privée. La signature prend la forme d'une série de caractères illisible et peut être seulement déchiffrée et donc lue avec la clef publique d'Alice. Bob aura donc besoin la clef publique d'Alice pour lire en texte clair le fichier de signature.

Pour construire une clef partagée pour la cryptographie symétrique
Albert utilises sa clef privée avec la clef publique de Bob pour générer une clef partagée qui sera la même obtenue par Bob en combinant sa clef privée avec la clef publique d'Alice. Cette clef partagée est ensuite utilisée pour les algorithmes symétrique comme 3DES ou AES. Il a l'avantage d'être bien plus rapide que le chiffrement asymétrique.

Pour chiffrer des données
Lorsqu'Albert veut envoyer des données chiffrées à Bob, Alice utilise le certificat de Bob pour chiffrer le chiffrement. Avec sa clef privée, Bob sera le seule capable de déchiffrer le message.
Construction d'une PKI:

openVPN fournit un jeu de script basé sur OpenSSL pour faciliter le processus de création des clefs et certificats. Nous allons étudier la construction d'une PKI sous Linux et Windows.

Pour obtenir des détails complets sur l'utilisation d'OpenSSL, référez-vous au site web SSL.

Sur Linux, copiez les fichiers d'OpenVPN files dans votre dossier utilisateur:

#cp /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /home/user/openvpn/ -R
#cd /home/user/openvpn/

Commencez la construction de la PKI:

Sur Windows, il se peut que vous deviez copier deux fichiers:

C:\Program Files\OpenVPN\easy-rsa>init-config.bat
C:\Program Files\OpenVPN\easy-rsa>copy vars.bat.sample vars.bat
The system cannot find the file specified.

C:\Program Files\OpenVPN\easy-rsa>copy openssl.cnf.sample openssl.cnf
1 file(s) copied.

Configurez les variables:

Editez le fichier "C:\Program Files\OpenVPN\easy-rsa\vars.bat" (Microsoft Windows) ou le fichier "/home/user/openvpn/vars" (Linux) file et configurez vos variables:

set KEY_COUNTRY=US
set KEY_PROVINCE=CA
set KEY_CITY=San Francisco
set KEY_ORG=OpenManiak
set KEY_EMAIL=webmaster@openvpntest.com


Initialisez les variables:

C:\Program Files\OpenVPN\easy-rsa>vars
/home/user/openvpn/#. ./vars

Nettoyez le fichier des clefs et supprimez toute ancienne clef:

#clean-all.bat
/home/user/openvpn/#./clean-all
1 file(s) copied.
1 file(s) copied.

Création de l'autorité de certification:

Créez la clef privée du CA et son certificat. Le certificat contient la clef publique.

C:\Program Files\OpenVPN\easy-rsa>build-ca.bat
/home/user/openvpn/#./build-ca

Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
...++++++
.........++++++
writing new private key to 'keys\ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [US]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [SanFrancisco]:
Organization Name (eg, company) [OpenManiak]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
master-openmaniak
Email Address [TeddyBear@openvpntest.com]:

Deux fichiers seront créés:
La clef privée du CA et le certificat du CA.
Le certificat du CA qui contient sa clef publique du CA est signé pas sa propre clef privée.

Créez la clef privée et le certificat du serveur OpenVPN.

C:\Program Files\OpenVPN\easy-rsa>build-key-server.bat server
/home/user/openvpn/#./build-key-server server

Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
........................................................++++++
.........................++++++
writing new private key to 'keys\server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [US]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [SanFrancisco]:
Organization Name (eg, company) [OpenManiak]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
server
Email Address [TeddyBear@openvpntest.com]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from openssl.cnf
Loading 'screen' into random state - done
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'US'
stateOrProvinceName :PRINTABLE:'CA'
localityName :PRINTABLE:'SanFrancisco'
organizationName :PRINTABLE:'OpenManiak'
commonName :PRINTABLE:'server'
emailAddress :IA5STRING:'TeddyBear@openvpntest.com'
Certificate is to be certified until Sep 6 17:36:18 2017 GMT (3650 days)
Sign the certificate? [y/n]:
y


1 out of 1 certificate requests certified, commit? [y/n]
y
Write out database with 1 new entries
Data Base Updated
Ce script contient deux commandes, la première va créer une clef privée et un fichier de requête de certificat et le deuxième va créer le certificat avec l'aide de la clef privée du CA.

Créez la clef privée et le certificat pour le client OpenVPN.

C:\Program Files\OpenVPN\easy-rsa>build-key.bat client
/home/user/openvpn/#./build-key client

Loading 'screen' into random state - done
Generating a 1024 bit RSA private key
........................................................++++++
.........................++++++
writing new private key to 'keys\client.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [US]:
State or Province Name (full name) [CA]:
Locality Name (eg, city) [SanFrancisco]:
Organization Name (eg, company) [OpenManiak]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
client
Email Address [TeddyBear@openvpntest.com]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Using configuration from openssl.cnf
Loading 'screen' into random state - done
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName :PRINTABLE:'US'
stateOrProvinceName :PRINTABLE:'CA'
localityName :PRINTABLE:'SanFrancisco'
organizationName :PRINTABLE:'OpenManiak'
commonName :PRINTABLE:'server'
emailAddress :IA5STRING:'TeddyBear@openvpntest.com'
Certificate is to be certified until Sep 6 17:36:18 2017 GMT (3650 days)
Sign the certificate? [y/n]:
y


1 out of 1 certificate requests certified, commit? [y/n]
y
Write out database with 1 new entries
Data Base Updated
Voilà, c'est fait!!!

Nous avons les clefs privées et certificats du client et du serveur OpenVPN. Il est nécessaire de copier les clefs privées et certificats sur les équipements OpenVPN appropriés, c'est-à-dire le certificat et la clef privée client doivent être copiées sur le client OpenVPN, même chose pour le serveur.

Note très importante:

Comme déjà indiqué précédemment, nous avons utilisé une autorité de certification (CA) pour générer des clefs privées et certificats. Ce processus ne devrait être utilisé que dans un environnement de test parce que le CA doit transférer les clefs privées vers les clients.

Echange de clef Diffie-Hellmann

L'échange de clef Diffie- Hellman est un processus cryptographique utilisé par deux équipements pour établir une clef partagée connue d'eux seuls.

Créons les paramètres Diffie-Hellman.

C:\Program Files\OpenVPN\easy-rsa>build-dh.bat
/home/user/openvpn/#./build-dh

Loading 'screen' into random state - done
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
.................................................................
....+.................................................+..........
.....................+.....+......................+..............
.............................................+...................
.....+...........................................................
..............................................................+..
.................+............+............................+.....
.......+.....................................................+...
...+......+..+...........................+.........+...+.........
..............................++*++*++*

Seul le serveur OpenVPN a besoin des paramètres DH, pas le client OpenVPN.

Haut de la page