OpenVPN et l'accès aux certificats

Fermé
Palo - Modifié par Palo le 24/06/2011 à 10:07
palopalo Messages postés 6 Date d'inscription mardi 30 novembre 2010 Statut Membre Dernière intervention 22 octobre 2012 - 13 juil. 2011 à 22:16
Bonjour,


J'utilise actuellement open VPN entre mon serveur et un système embarqué. J'ai généré les clés et je les ai mis dans le répertoire /etc/openvpn/.


Maintenant j'aimerais demander à openVPN de ne pas prendre les certificats dans ce répertoire. Car sur mon système embarqué il y a un clé USB qui permet de s'authentifier sur des pages Web.


J'aimerais pouvoir utiliser les certificats et les clés se trouvant à l'intérieur de la clé USB. Ma question est de savoir s'il est possible déjà de modifier l'accès par défaut de openVPN aux certificats.

9 réponses

Bonjour,

Je cite cela de mémoire. Dans le fichier de configuration de ton serveur (qui se trouve dans /etc/openvpn lui aussi), tu as des directives qui indiquent les fichiers de clef, de certificat, etc... tu peux y placer un chemin relatif ou absolu.
0
Effectivement, un fichier configuration se trouve dans ce répertoire. Merci.

Maintenant il va falloir trouver un moyen de lui dire d'aller chercher ça sur la clé USB. Le problème c'est que la clé n'est pas visible et il n'y a pas d'accès possible directement.

J'ai du utiliser du code Java pour utiliser les clés RSA de ma clé USB pour faire des tests de chiffrements.

Dans le fichier .conf, ce sont des chemins d'accès qui doivent être entrer. Si quelque pense que c'est faisable autrement, je suis tout ouïe :D

En tout cas merci pour l'info. Je vais commencer par analyser les items USB qui transite entre ma clé et le code Java pour voir si j'ai un autre moyen de récupérer les certificats :)
0
Je m'aperçois que le proxy de mon entreprise me bloque pour accéder au site OpenVPN... super !

Donc encore de mémoire : tu dois pouvoir placer un script au nom particulier encore une fois dans /etc/openvpn (je l'ai déjà fait), et ce script est lancé avant l'établissement du service. Donc tu peux y monter ta clef à l'endroit où tu veux.

Fais une recherche sur "openvpn pre up script".
0
quand tu dis "Donc tu peux y monter ta clef à l'endroit où tu veux. "

Tu parles d'aller chercher la clé qui se trouve sur mon USB et de la placer quelque part ou de modifier le chemin d'accès du fichier de config pour que onpenVPN la cherche dans la clé ?


Merci pour ces infos, je suis en train de chercher des exemples de scripts :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Je parle d'aller chercher la clef de chiffrement directement sur la clef USB.

En gros je parle de la commande mount.

Quelque chose de ce genre-là...
Dans le preup :
mount /dev/disk/by-uuid/<uuid_de_la_clef_usb> /mnt/keys

Dans le fichier de config (qui reste dans /etc/openvpn), en remplaçant KeyFile par le vrai nom de propriété :
KeyFile /mnt/keys/openvpn_key   

Et dans un "postdown" :
umount /mnt/keys
0
La clé en question est en faite un lecteur de carte.

Maintenant en plus de trouver un moyen de monter le lecteur, il faut que je trouve un moyen de récupérer les informations sur la carte.

Merci pour ton aide. J'ai avancé un peu grâce à ça :)
0
Une lecture qui pourra peut-être t'aider :
http://www.unixgarden.com/index.php/administration-systeme/utilisation-de-smartcards-gnupg-v2-au-quotidien-partie-1

Ou encore, si tu as quelques euros à dépenser :
http://www.ed-diamond.com/produit.php?ref=lmhs39&id_rubrique=2&caracteristique=1-2-&caracdisp=2-4-
0
J'ai trouvé une autre piste qui pourrait m'aider.

Si je branche ma clé USB avec les processus des browser non lancé (Firefox/IE fermé) il copie les certificats.

C'est à dire que si j'ouvre Firefox et que je vais regarder la liste des certificats, je voie les deux utilisés par ma clé.

Je vais essayer de les extraire de manière automatique avec un script ou du code Java (actuellement j'arrive juste les lister).
0
palopalo Messages postés 6 Date d'inscription mardi 30 novembre 2010 Statut Membre Dernière intervention 22 octobre 2012
Modifié par palopalo le 13/07/2011 à 22:18
Alors j'ai une solution (efin)

OpenVPN 2.1 et plus récent support le PKCS#11.

Une commande d'OpenVPN permet de récupérer l'ID avec le chemin d'accès sur le reader de la Smart Card

$ sudo openvpn --show-pkcs11-ids /usr/lib/nomDeLaLib.so


Pour une Smart Card standard la librairie est : pkcs11.so
Pour les utilisateurs de la Suisse ID : libcvP11.so (powered bye Crypto Vision)

Le résultat va vous afficher les informations pour tous les certificats personnelles (authentification/signateur/...)

Certificate 
       DN:             /CN=Prenom Nom (Authentication)/emailAddress=prenom.nom@exemple.ch/serialNumber=1313-1313-1313-1313 
       Serial:         1B1XXA71XX649XX33AXXC53XX088XX 
       Serialized id:  SwissSign/CardOS\xxxxx\bbbbb/7bff2081ef012f35/SwissSignID/83444981CD0E4AB27EE8B7369532C9F886FEF6B3


Alors tout le début du Serialized ID représente le chemin et le long texte avec des chiffres et des lettre représente l'ID du certificat

Pour vérifiez vous pouvez installer le package opensc et lancer cette commande :

$ sudo pkcs15-tool -c 


Qui va vous affichez tous les certificats de la Smart Card (même les root et intermédiaire) avec leur nom et leur ID.

Maintenant côté OpenVPN il faut gérer les deux fichiers de configuration (j'indique uniquement les parties qui touchent aux certificats).

Client

ca /etc/openvpn/ca.crt <-- Ce certificat est celui généré par le Serveur, il signe le certificat serveur.crt

pkcs11-providers /usr/lib/libcvP11.so
pkcs11-id 'SwissSign/CardOS\xxxxx\bbbbb/7bff2081ef012f35/SwissSignID/83444981CD0E4AB27EE8B7369532C9F886FEF6B3'

tls-auth /etc/openvpn/keys/ta.key 0 <-- Clé pour le tls/ssl générée par le serveur


Serveur

ca /etc/openvpn/ca.crt <-- Ce certificat est celui qui signe les certificats personnelle de la SmartCart (il faut toute la chaine)

cert /etc/openvpn/keys/server.crt <-- Certificat généré via le serveur
key /etc/openvpn/keys/server.key <-- Clé générée via le serveur

dh /etc/openvpn/keys/dh1024.pem <-- paramètre diffie-hellman généré par le serveur
tls-auth /etc/openvpn/keys/ta.key 0 <-- Clé pour le tls/ssl générée par le serveur

Il y a encore un point à respecter du côté serveur. Dans le dossier CCD il y a des fichiers qui permettent de donner une adresse IP et une passerelle au client. Ce fichier dois avoir un nom spécifique (en principe le nom sera écrit dans l'invit de commande côté client et dans les logs côté serveur quand vous tenterez de faire le tunnel), dans les exemples que j'ai vu il portait le nom du certificat en respectant ceci

* Le prénom du propriétaire suivit d'un « _ »
* Le nom du propriétaire suivit d'un « _ »
* Le type du certificat précédé et suivit d'un « _ »
* Tous les caractères spéciaux remplacés par « __ »


Exemple avec le certificat vu plus haut (CN=Prénom Nom (Authentication))
* Pr__nom_Nom__Authentication_


Pour extraire les certificats directement sur la Smart Card avec la chaine complète il faut utiliser cette commande

$ pkcs15-tool -R idCertifIntermediaire1 > nomFichier.crt 
$ pkcs15-tool -R idCertifIntermediaire2 >> nomFichier.crt 
$ pkcs15-tool -R idCertifIntermediaireX >> nomFichier.crt 
$ pkcs15-tool -R idRoot >> nomFichier.crt 



Il y a énormément de HOWTO sur Internet qui explique comment générer les certificats et les clés pour une connexion OpenVPN standar. Le côté serveur représente exactement ces configuration, il n'y a que le ca.crt qui est différent. Et le ca.crt que les HOWTO vous font créer sera mis uniquement du côté client.

Voilà j'espère que ça va aider du monde.
Sinon en recherche sur Google : HOWTO OpenVPN SmartCard aide beaucoup. Les informations données plus haut dépanne énormément pour ces reader d'authentification avec Smart Card porpriétaire
0