IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

Gestion de certificat client reçu en headers


Sujet :

Apache

  1. #1
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut Gestion de certificat client reçu en headers
    Bonjour,

    J'ai un problème que je n'arrive as à résoudre. j'utilise apache comme un proxy à un serveur d'application (tomcat), et en amont du serveur apache j'ai un F5.
    En grois voilà l'archi:

    F5 --> apache --> tomcat

    La personne qui se connecte doit présenter un certificat client. Et c'est le F5 qui se charge de réclamer le certificat, de décapsuler la trame, d'ajouter un header X-Forwarded-For, et un header SSL_CLIENT_CERT.
    Le X-Forwarded-For contient l'ip de la personne et le SSL_CLIENT CERT contient le certificat en b64 (avec les begin et end).

    Arrivé sur apache, je voudrai pouvoir récupérer le certificat client, et le décoder pour en extraire le DN (ou subject), et mettre cette chaine extraite dans un autre header qui sera ensuite transmis au tomcat via un proxypass.

    Le problème est que le certificat client reçu est visible dans le header ${SSL_CLIENT_CERT}i et que le requestheader ou le set header n'accepte pas le "i". il ne prend que le "s" ou le "e".

    Y a t il un moyen d'arriver à mes fins ? Existe t il un autre module que le mod_headers qui me permettrait de résoudre mon problème ? je tourne sur Apache/2.2.15

    J'espère que vous pourrez m'aider.

  2. #2
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut
    Bonjour,

    j'aiavancé un peu avec rewritemap:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteEngine On
    RewriteMap doheader prg:/home/apache/test.pl
    RewriteRule (.*) - [E=RORO:${doheader:},P]
    Par contre je ne comprends pas. Mon script perl est censé afficher ce qu'il reçoit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #!/usr/bin/perl
     
    use strict;
    use warnings;
     
    $|=1;
     
    while( my $line = <STDIN> ) {
    	chomp $line;
    	print $line, "\n";
    }
    Sauf qu'il ne renvoi rien car apparemment il ne reçois rien. Si je remplace le print line par print 'coucou', alors je vois bien ma variable dans les logs apache initialisée à coucou.

    Pourquoi est-ce que mon script ne reçoit rien ?? Je ne pige pas ... Je voudrai dans mon script récupérer un header, faire un traitement dessus et renvoyer le résultat du traitement à apache.
    Mais rien ... Du coup je me suis dit qu'il fallait peut-être lui filer des variables dans l'url. J'ai donc essayé d'appeler la page avec un ?test=toto, mais idem, il ne récupère rien ...

    Avez-vous une idée ??

  3. #3
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Euh... Quel est le rapport entre ton problème de certificat client et ton CGI Perl ?

    Pour ton histoire de certificat, il faut que tu demandes à ton F5 de te renvoyer le DN dans un autre en-tête. Je ne suis pas sûr qu'Apache puisse décoder le certificat s'il n'y a pas de connexion SSL entrante.

  4. #4
    Membre habitué
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Points : 159
    Points
    159
    Par défaut
    hello,

    En fait, la comm entre le F5 et apache se fait en SSL. J'ai fait pleins de tests et quelque soit le nom du header utilisé, il arrive sous forme d'un header de type "i" sur apache.
    Et du coup, le mod_headers d'apache ne peut rien en faire à part le transmettre directement via le proxypass. Pour pouvoir faire une traitement dessus, il faudrait le recevoir avec un type 'e' ou 's'.

    Donc pour arriver à traiter ces données sur apache, je suis obligé de passer par un rewritemap (attention, ne pas confondre rewritemap avec cgi).
    L'avantage du rewritemap est de faire un traitement, sur des données en input, et renvoyer un résultat à apache qui va ensuite pouvoir le transmettre ou réutiliser les données
    pour autre chose. Le cgi va juste permettre d'exécuter un ensemble d'action et renvoyer les résultats directement au client. enfin, je ne suis aps non plus expert, mais c'est ce que j'ai pu remarquer à travers le temps sur mes différentes config.

    Donc c'est la seule solution que j'ai trouvé pour arriver à mes fins. Mais quand je trace l'exécution du script, je me rends compte que le script ne reçoit aucune données. Du coup, je ne peux rien traiter sur le script. Par contre si je fini mon script par du contenu statique (print "coucou" par exemple), pas de prob, apache récupère bien et continue le traitement demandé. Il faut juste que je comprenne pourquoi le script ne reçois rien ...

    Une idée ?

  5. #5
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Y a pas une variable dans $ENV qui contient ce que tu cherches ?

Discussions similaires

  1. Gestion des certificats dans une application client/serveur j2ee
    Par alexandre.granier dans le forum Java EE
    Réponses: 2
    Dernier message: 26/06/2013, 13h11
  2. Gestion et identification client
    Par Odcfrombelgium dans le forum Autres Logiciels
    Réponses: 21
    Dernier message: 27/09/2006, 13h44
  3. Conception d'un systeme de gestion d'appel client
    Par Andry dans le forum Schéma
    Réponses: 24
    Dernier message: 01/09/2006, 19h31
  4. certificats clients sous IIS 6
    Par fredoche dans le forum ASP
    Réponses: 4
    Dernier message: 03/08/2006, 12h45
  5. Réponses: 2
    Dernier message: 12/10/2004, 14h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo