50. Mise en place d’un VPN sur SSL

Nous restons dans l'idée de bâtir un VPN, mais cette fois c'est la couche SSL/TLS qui sera utilisé pour le chiffrement et l'authentification. Pour cela, on se basera sur le couple logiciel stunnel/pppd. Cette solution (par rapport à la précédente) apporte la solidité des certificats et la gestion du daemon stunnel. Le principe pour établir un PVN reste le même.

50.1. Connexion manuelle

Contrairement à ssh qui intègre directement la gestion du chiffrement et de la reconnaissance des autres, il va falloir créer nous-même les identifiants, ici représentés par des certificats.

Sur le serveur il faut créer le certificat et ses pendants :


vanvincq@Debian-Laptop ~ $ openssl req -new -x509 -days 365 -nodes \
> -config /etc/ssl/openssl.cnf -out server.pem -keyout server.pem
Generating a 1024 bit RSA private key
...................................++++++
...........................++++++
writing new private key to 'server.pem'
-----
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) [AU]:FR
State or Province Name (full name) [Some-State]:NORD
Locality Name (eg, city) []:VILLENEUVE D'ASCQ
Organization Name (eg, company) [Internet Widgits Pty Ltd]:CP2L  
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:VANVINCQ
Email Address []:vanvincq.clement@laposte.net
vanvincq@Debian-Laptop ~ $ ls server.pem 
server.pem

Maintenant qu'on a obtenu le certificat, il ne faut pas oublier d'en faire une copie sans sa clef privée.


vanvincq@Debian-Laptop ~ $ openssl x509 -in server.pem -out server.cert
vanvincq@Debian-Laptop ~ $ ls server*
server.cert  server.pem

Une fois la séparation effectuée, on copie le server.cert sur la machine cliente, puis on le lie en utilisant le hash du fichier :


vanvincq@Debian-Laptop ~ $ ln -s server.cert `openssl x509 -hash -noout -in server.cert`.0

Maintenant, on réeffectue les opérations pour la machine cliente :