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.
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 :