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
|
|
| |
|
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 :
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
|
|
| |
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.
|