Précédent   Forum des professionnels en informatique > Systèmes > Linux
Linux Forum d'entraide sur le système Linux. Avant de poster -> Tutoriels Linux, F.A.Q Linux
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/07/2011, 16h35   #1
Invité régulier
 
Inscription : novembre 2010
Messages : 40
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 40
Points : 8
Points : 8
Par défaut OpenVPN & SmartCard : TLS_ERROR

Bonjour,

Je essai actuellement d'authentifier mon tunnel OpenVPN à l'aide de certificats qui se trouvent sur ma SmartCard. Je rencontre des problèmes avec la vérification du CA qui a signer les certificats se trouvant sur la SmartCard.

Voici quels info pour vous situez dans ce que je fais.

Je travaille avec la SuisseID (Reader + SmartCard). Cette SmartCard est bloquée en écriture.
La lib opencs ne fonctionne pas avec cette clé, il faut utilisé la librairie libcvP11.so.

Sur la clé on trouve de base (à l'achat)
  • Les clés RSA privés
  • Les clés RSA publiques (extractable)
  • Toute la chaince de certificat (Root-autosigné, IntermédiaireAuth, IntermédiaireSign, PersoAuth, PersoSign)

Les certificats utilisés de chaque coté du tunnel sont les certificats "PersoAuth" du propriétaire de la SuisseID, signé par les certificats intermédiaire, eux-m^eme signé par le certificat root.

Donc ma configuration ressemble à ça

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
client
dev tun
proto udp
remote adresseIP 1194
resolv-retry infinite
nobind
tls-client
persist-key
persist-tun
 
ca keys/SwissSignSuisseIDPlatinumCA2010-G2
 
pkcs11-providers /usr/lib/libcvP11.so
pkcs11-id 'aaaaaa/bbbbbb\ccccc\x2E3B/7bff2081ef012f35/SwissSignID/83444981CD0E4AB27EE8B7369532C9F886FEF6B3'
 
ns-cert-type server
tls-auth /etc/openvpn/keys/ta.key 1
cipher AES-128-CBC
pull
#comp-lzo
verb 2
mute 5
Je récupère correctement l'accès à mon certificat personnel d'authentification avec la commande OpenVPN suivante :
Code :
$ sudo openvpn --show-pkcs11-ids /usr/lib/libcvP11.so
Le CA configuré si-dessus est le certificat IntermédiaireAuth sans la chaine complète (génère une erreur s'il y a un certificat auto-signer dans la chaine).
Il est sur que ce certificat et valide. Je l'ai extrait de FireFox, directement de la clé via un script et télécharger sur le site de SwissSign pour voir si un des certificats n'était pas bon.

Donc je viens à mon erreur. Lorsque je veux me connecter à mon serveur OpenVPN avec la commande
Code :
$ sudo openvpn client.conf
Il me génère cette erreur :

Code :
1
2
3
4
Fri Jul  8 13:18:59 2011 VERIFY ERROR: depth=1, error=unable to get local issuer certificate: /C=CH/O=SwissSign_AG/CN=SwissSign_SuisseID_Platinum_CA_2010_-_G2
Fri Jul  8 13:18:59 2011 TLS_ERROR: BIO read tls_read_plaintext error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Fri Jul  8 13:18:59 2011 TLS Error: TLS object -> incoming plaintext read error
Fri Jul  8 13:18:59 2011 TLS Error: TLS handshake failed
J'espère que quelqu'un pourra m'éclaircir.
Je suis persuader que l'erreur vient du CA, mais je ne sais pas comment régler ce problème.
Il y a énormément de HOWTO sur le net, mais tous avec des SmartCard qui sont modifiable (utiliser ma SmartCard limité en accès est une contrainte, je ne peux pas faire autrement).

J'arrive récupérer l'ID du certificat intermédiaire grâce à la commande :
Est ce qu'il y a un moyen de faire un link similaire au pkcs11-id vu plus haut dans la config, mais pour le CA ?


Bonne journée,
palo
PaloPalo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 16h54   #2
Débutant
 
Homme
Inscription : janvier 2004
Messages : 435
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : janvier 2004
Messages : 435
Points : 245
Points : 245
Bonjour PaloPalo,

Je n'ai jamais fais d'authenticate sur un VPN,
Mais pour la partie carte à puce, le faites qu'elle soit accéssible uniquement en lecture ne dois pas avoir d'incidence sur l'authentification.
L'ideal serait de foutre un sniffer USB pour voir les echanges avec ta smartcard, il est possible que celle-ci ne soit pas prise en charge, le sniffer te permettra de voir si les commandes APDU executé ne te retourne pas de "status failed" ( != 0x9000 ).
Aussi tu peux essayer de te créer rapidos un outil te permettant de vérifier ta signature via ta clé public, cela te permettra de t'assurer que ton certificat stocké dans ta carte est bien generé, il y a telement de parametre possible lors qu'une authentification qu'une simple valeur de PADDING EDC ou CDC peu te retourner une signature differentes.

En esperant t'avoir aidé.

Cordialement,

Moulefrite
moulefrite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 13h56   #3
Invité régulier
 
Inscription : novembre 2010
Messages : 40
Détails du profil
Informations forums :
Inscription : novembre 2010
Messages : 40
Points : 8
Points : 8
J'avais oublié que j'avais posé cette question.


La configuration du client OpenVPN est correcte. Pour récupérer l'identification des certificats et le chemin d'accès, il faut utiliser cette commande :
Code :
sudo openvpn -show-pkcs11-ids /usr/lib/libcvP11.so
Le résultat est la ligne en rouge dans mon 1er poste (la librairie utilisée correspond à la SuisseID et est propriétaire. Pour des clé standard, la librairie est libpkcs11.so).


Voici maintenant les certificats côté serveur et côté client

Client
  • CA: CA.crt, c'es le certificat qui a signé le certificat du serveur (serveur.crt)
  • crt: Le chemin du certificat d'authentification et de sa clé privée sur la SmardCard (en rouge)
  • Le chemin de la librairie utilisée

Serveur
  • CA: SwissSign.crt, qui représente l'ensemble de l’arborescence des certificats qui signe le certificat d'authentification de la SmardCard (dans un seul certificat --> dans mon cas : Root-autosigné et IntermédiaireAuth)
  • crt: serveur.crt, le certificat du serveur signé par le CA.crt
  • key: serveur.key, le chemin de la clé privée du serveur

Donc c'est ce qu'on va trouver dans les fichier de configuration. Pour le serveur, il faut juste assembler tous la chaine de certificats dans un seul certificat.

Il y a maintenant encore un chose à faire du côté du serveur OpenVPN. Dans la partie CCD qui contient le fichier de configuration du client, il faut que ce fichier porte le nom du certificat sur la SmardCard. Si vous n'êtes pas sûr du nom, nommer votre fichier comme vous voulez, lancez la connexion, ce nom sera afficher dans les fichiers log ou directement à l'écran pendant l'échange des certificats. (Ce qui c'est passé pour moi lorsque j'ai ouvert ce topic, mais je ne savais pas encore que la solution était sous mon nez )

Si vous regardez l'erreur que j'ai mis dans mon 1er poste, ça signifierait que mon fichier de configuration client dans le dossier CCD doit se nommer SwissSign_SuisseID_Platinum_CA_2010_-_G2.

Voilà, j'espère que c'est assez claire. Tout ce qui est création du CA et des clés publiques/privées du serveur pour OpenVPN se trouvent dans tous les HOWTO disponibles sur le net.
PaloPalo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h14.


 
 
 
 
Partenaires

Hébergement Web