France Hardware : Forums de discussion
Retrouvez les prix près de chez vous :  
Index du forum | Liste des membres | Liste des groupes | Inscription | F-A-Q | Recherche
Pseudo :    Password :     
22 747 membres enregistrés - 1 887 808 posts - 96 563 topics
Index des forums FH  | Index des forums DegroupNews
      Systèmes et Logiciels Alternatifs
           [resolu]openvpn et verify-dn(perl)
33 connectés(record : 207 le 05 juin 2007 - 05 h 23)

Vous devez vous connecter pour répondre au topic.
[resolu]openvpn et verify-dn(perl)

poluxxx
Tranquille!!!!!

Messages : 6 227
Inscrit le 12/03/02
Ville : st etienne de st geoirs 38
Non connecté
  Posté le 19 août 2005 - 12 h 56 m 27 s
je planche sur openvpn, et je désire modifier le script fourni dans openvpn 2.0 verify-cn ecrit en perl,
mais je suis très faché avec le perl.
En fait je désire controler L'O.U. (Organisation Unit) du certificat X509 (.P12) du client et non pas le cn (common name), pour autoriser l'accès a mon réseau seulement au personne appartenant a mon département.
auriez vous déja planché là dessus, des examples , la recherche sur le forum n'as rien donné, et sur google pareil.
ci-joint le dit script "verify-cn" appelé par la ligne "tls-verify ./verify-cn toto.dudu" dans le server.conf d'OpenVPN sous fedora:

#!/usr/bin/perl

# verify-cn -- a sample OpenVPN tls-verify script
#
# Return 0 if cn matches the common name component of
# X509_NAME_oneline, 1 otherwise.
#
# For example in OpenVPN, you could use the directive:
#
# tls-verify "./verify-cn Test-Client"
#
# This would cause the connection to be dropped unless
# the client common name is "Test-Client"

die "usage: verify-cn cn certificate_depth X509_NAME_oneline" if (@ARGV != 3);

# Parse out arguments:
# cn -- The common name which the client is required to have,
# taken from the argument to the tls-verify directive
# in the OpenVPN config file.
# depth -- The current certificate chain depth. In a typical
# bi-level chain, the root certificate will be at level
# 1 and the client certificate will be at level 0.
# This script will be called separately for each level.
# x509 -- the X509 subject string as extracted by OpenVPN from
# the client's provided certificate.
($cn, $depth, $x509) = @ARGV;

if ($depth == 0) {
# If depth is zero, we know that this is the final
# certificate in the chain (i.e. the client certificate),
# and the one we are interested in examining.
# If so, parse out the common name substring in
# the X509 subject string.

if ($x509 =~ /\/CN=([^\/]+)/) {
# Accept the connection if the X509 common name
# string matches the passed cn argument.
if ($cn eq ) {
exit 0;
}
}

# Authentication failed -- Either we could not parse
# the X509 subject string, or the common name in the
# subject string didn't match the passed cn argument.
exit 1;
}

# If depth is nonzero, tell OpenVPN to continue processing
# the certificate chain.
exit 0;


Message édité 2 fois, la dernière par poluxxx le 29 août 2005 - 16 h 28.

Abyssus Abyssum Invocate

Black list : m@verick (braconneur en MP), edyli (ebayeur en MP)


poluxxx
Tranquille!!!!!

Messages : 6 227
Inscrit le 12/03/02
Ville : st etienne de st geoirs 38
Non connecté
  Posté le 23 août 2005 - 17 h 29 m 48 s
alors moi qui croyait rha etait plien de scripteur fou!!!!



Abyssus Abyssum Invocate

Black list : m@verick (braconneur en MP), edyli (ebayeur en MP)


iraysyvalo
-

Messages : 9 647
Inscrit le 19/11/02
Ville : Lyon
Non connecté
  Posté le 23 août 2005 - 19 h 34 m 04 s

A priori c'est juste une regexp mais faut que tu voies ce qui peut passer dans la variable $x509 d'abord ...

Un essai simple est de mettre OU dans le test pour voir s'il choppe quoi que ce soit ??




Pour un ban rapide et garanti sur ce forum, argumentez vos posts, dites simplement la verite, parlez de la realite et les leche-culs d'un cote et les maniaques du ban de l'autre se feront un plaisir de vous envoyer au purgatoire aussi sec.


kha
Google is your best friend

Messages : 1 235
Inscrit le 01/03/02
Ville : Montreal
Non connecté
  Posté le 23 août 2005 - 22 h 43 m 50 s


Le 23 août 2005 - 17 h 29, poluxxx a écrit :
alors moi qui croyait rha etait plien de scripteur fou!!!!


C est vrai qu il faut l etre pour du PERL :P




poluxxx
Tranquille!!!!!

Messages : 6 227
Inscrit le 12/03/02
Ville : st etienne de st geoirs 38
Non connecté
  Posté le 24 août 2005 - 09 h 02 m 43 s


Le 23 août 2005 - 19 h 34, iraysyvalo a écrit :

A priori c'est juste une regexp mais faut que tu voies ce qui peut passer dans la variable $x509 d'abord ...

Un essai simple est de mettre OU dans le test pour voir s'il choppe quoi que ce soit ??


je l'ai tenté mais rien de concret, il faudrais rediriger le résultat dans un log, tu n'aurais pas la ligne qu'il faut par hazard



Abyssus Abyssum Invocate

Black list : m@verick (braconneur en MP), edyli (ebayeur en MP)


iraysyvalo
-

Messages : 9 647
Inscrit le 19/11/02
Ville : Lyon
Non connecté
  Posté le 24 août 2005 - 09 h 10 m 23 s

print @ARGV devrait donner une idee du truc :)




Pour un ban rapide et garanti sur ce forum, argumentez vos posts, dites simplement la verite, parlez de la realite et les leche-culs d'un cote et les maniaques du ban de l'autre se feront un plaisir de vous envoyer au purgatoire aussi sec.


poluxxx
Tranquille!!!!!

Messages : 6 227
Inscrit le 12/03/02
Ville : st etienne de st geoirs 38
Non connecté
  Posté le 24 août 2005 - 09 h 41 m 33 s
merçi je teste dans la foulée



Abyssus Abyssum Invocate

Black list : m@verick (braconneur en MP), edyli (ebayeur en MP)


poluxxx
Tranquille!!!!!

Messages : 6 227
Inscrit le 12/03/02
Ville : st etienne de st geoirs 38
Non connecté
  Posté le 24 août 2005 - 10 h 48 m 56 s
le print @ARGV envoi les donnée a quel endroi, ne pourrais t'on pas rediriger dans un fichier precis??

je l'ai intégré comme cela et je ne voit rien:

#!/usr/bin/perl

# verify-cn -- a sample OpenVPN tls-verify script
#
# Return 0 if cn matches the common name component of
# X509_NAME_oneline, 1 otherwise.
#
# For example in OpenVPN, you could use the directive:
#
# tls-verify "./verify-cn Test-Client"
#
# This would cause the connection to be dropped unless
# the client common name is "Test-Client"

die "usage: verify-cn cn certificate_depth X509_NAME_oneline" if (@ARGV != 3);

# Parse out arguments:
# cn -- The common name which the client is required to have,
# taken from the argument to the tls-verify directive
# in the OpenVPN config file.
# depth -- The current certificate chain depth. In a typical
# bi-level chain, the root certificate will be at level
# 1 and the client certificate will be at level 0.
# This script will be called separately for each level.
# x509 -- the X509 subject string as extracted by OpenVPN from
# the client's provided certificate.
($cn, $depth, $x509) = @ARGV;
print @ARGV;
if ($depth == 0) {
# If depth is zero, we know that this is the final
# certificate in the chain (i.e. the client certificate),
# and the one we are interested in examining.
# If so, parse out the common name substring in
# the X509 subject string.

if ($x509 =~ /\/CN=([^\/]+)/) {
# Accept the connection if the X509 common name
# string matches the passed cn argument.
if ($cn eq ) {
exit 0;
}
}

# Authentication failed -- Either we could not parse
# the X509 subject string, or the common name in the
# subject string didn't match the passed cn argument.
exit 1;
}

# If depth is nonzero, tell OpenVPN to continue processing
# the certificate chain.
exit 0;


Message édité 1 fois, la dernière par poluxxx le 24 août 2005 - 10 h 50.

Abyssus Abyssum Invocate

Black list : m@verick (braconneur en MP), edyli (ebayeur en MP)


iraysyvalo
-

Messages : 9 647
Inscrit le 19/11/02
Ville : Lyon
Non connecté
  Posté le 24 août 2005 - 16 h 59 m 35 s
Remplaces ton script par ceci :

    Code     
1. // Salete de bug
2. 
3. #!/usr/bin/perl
4. 
5. foreach (@ARGV){
6. 	print $_;
7. }
8. 




Pour un ban rapide et garanti sur ce forum, argumentez vos posts, dites simplement la verite, parlez de la realite et les leche-culs d'un cote et les maniaques du ban de l'autre se feront un plaisir de vous envoyer au purgatoire aussi sec.


poluxxx
Tranquille!!!!!

Messages : 6 227
Inscrit le 12/03/02
Ville : st etienne de st geoirs 38
Non connecté
  Posté le 24 août 2005 - 20 h 50 m 36 s
enfin quelqu'un qui parle perl le bonheur merçi je teste demain matin :D



Abyssus Abyssum Invocate

Black list : m@verick (braconneur en MP), edyli (ebayeur en MP)


poluxxx
Tranquille!!!!!

Messages : 6 227
Inscrit le 12/03/02
Ville : st etienne de st geoirs 38
Non connecté
  Posté le 29 août 2005 - 16 h 31 m 21 s
bon le script ne fait pas grands chose, parcontre je viens de récupere un script en perl exactement celui dont je révais et ça roule pour les amateurs je peux le communiquer, merçi a tous de votre aide surtout iraysyvalo!!!!!


Message édité 1 fois, la dernière par poluxxx le 29 août 2005 - 16 h 32.

Abyssus Abyssum Invocate

Black list : m@verick (braconneur en MP), edyli (ebayeur en MP)


iraysyvalo
-

Messages : 9 647
Inscrit le 19/11/02
Ville : Lyon
Non connecté
  Posté le 29 août 2005 - 16 h 37 m 08 s

De rien :)




Pour un ban rapide et garanti sur ce forum, argumentez vos posts, dites simplement la verite, parlez de la realite et les leche-culs d'un cote et les maniaques du ban de l'autre se feront un plaisir de vous envoyer au purgatoire aussi sec.


Page genérée en 0.3981 secondes par RahForum 2.0 | Gzip off |  Stats |  Metaforums |  RSS
© 2004 Cerbere Systems.
Prix Matériel Informatique | Informatique Lyon | Informatique Grenoble | Informatique Annecy | Informatique Marseille | Informatique Bordeaux | Forum Informatique
ADSL |Actualité ADSL | e-commerce | Commande Au Volant
Creative Commons
Message Boards and Forums Directory