« Mise en place d'un VPN avec OpenVPN » : différence entre les versions

Aller à la navigation Aller à la recherche
Ligne 111 : Ligne 111 :


Pour l'instant, nous avons une configuration fonctionnelle, mais pas parfaite. En effet, nous avons créé une autorité de certification dédié à l'émission de certificats vpn, mais n'importe quel certificat signé par l'un des parents de cette autorité sera autorisé à se connecter. Par exemple, si vous signez un certificat client au moyen de l'autorité root_ca, ce certificat sera reconnu comme valide par openvpn (car du point de vue du protocole SSL, il l'est).
Pour l'instant, nous avons une configuration fonctionnelle, mais pas parfaite. En effet, nous avons créé une autorité de certification dédié à l'émission de certificats vpn, mais n'importe quel certificat signé par l'un des parents de cette autorité sera autorisé à se connecter. Par exemple, si vous signez un certificat client au moyen de l'autorité root_ca, ce certificat sera reconnu comme valide par openvpn (car du point de vue du protocole SSL, il l'est).
Si vous n'avez qu'un seul serveur cela ne devrait pas poser de problème. Mais si vous en avez plusieurs il est possible que l'autorité root_ca soit sur un serveur, alors que l'autorité vpn_ca soit sur un autre serveur et seul ce dernier serveur devrait être capable d'émettre un certificat client pour notre vpn (sinon, pourquoi créer tant d'autorité ? :)).<br />
De même, le problème se pose si vous utilisez un certificat commercial que vous avez acheté (chez thawte par exemple). Étant donné que vous êtes obligé de préciser à openvpn le certificat root de thawte, toutes personnes ayant elle aussi un certificat thawte pourra se connecte à votre vpn (ce n'est pas exactement vrai étant donné que nous avons créé une clé tls propre à notre serveur (directive <code>tls-auth</code>)).


Pour régler ce problème, nous allons utiliser la directive <code>tls-verify</code> de openvpn qui permet de d'exécuter un script personnalisé afin d'autoriser ou de refuser la connexion selon le cas.
Pour régler ce problème, nous allons utiliser la directive <code>tls-verify</code> de openvpn qui permet de d'exécuter un script personnalisé afin d'autoriser ou de refuser la connexion selon le cas.
Ligne 152 : Ligne 155 :
#echo $a
#echo $a


#Si on est à la profondeur zéro, on intercepte ici
#Si on est à la profondeur zéro, on est arrivé au certificat client
if [ $1 = 0 ]; then
if [ $1 = 0 ]; then
         exit 0
         exit 0
Ligne 163 : Ligne 166 :
fi
fi
</pre>
</pre>
Ce script va être exécuté par openvpn à chaque authentification et pour chaque certificat de la chaine de certification (quatre fois en tout dans notre cas : root_ca, onyx_ca, vpn_ca et le certificat client). Pour résumer lors d'une connexion au vpn :
* openvpn s'assure grâce à openssl que la chaine de certification est valide (c'est-à-dire, que tous les certificats sont valides l'un par rapport à l'autre).
* openvpn s'assure grâce à ce petit script que la chaine de certification est bien dans l'ordre que nous le voulons (root > onyx > vpn > client).


=Configuration du client openvpn=
=Configuration du client openvpn=
4 206

modifications

Menu de navigation