« 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 | #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= |