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

Réseau/Web Python Discussion :

Connection en https avec "requests" sur une cible via username/port et adresse IP [Python 3.X]


Sujet :

Réseau/Web Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2017
    Messages : 16
    Points : 15
    Points
    15
    Par défaut Connection en https avec "requests" sur une cible via username/port et adresse IP
    Bonjour à tous,

    J'aimerai me connecter à une carte électronique possédant un web-serveur mais je n'y arrive pas en connexion sécurisée.
    J'utilise le module "requests" pour cela.
    Si la cybersécurité est activée sur cette carte, seulement le protocole TLS est accepté.
    Si ce n'est pas le cas, une connexion en HTTP classique fonctionne très bien.
    J'ai plutôt bien compris

    Code (qui fonctionne) utilisé sans la cyber :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import requests
    r = requests.get("http://192.168.1.71/ewsgi/list/maint_reconf/confs/")
    json_response = json.loads(r.text[8:])
    print(json_response)
    Seulement en TLS, je ne comprends pas vraiment comment requests fonctionne dans la situation imposé par ma carte.
    Je n'ai pas d'URL classique (de type 'http://www.google.com') mais une combinaison d'un username, une adresse IP et un port.
    D'habitude, lorsque j'utilise l'URL suivant : 'https://user_name:port_number/ewsgi/list/maint_reconf/' avec les certificats préalablement renseignés, j'arrive à me connecter à cause du code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import socket
    mon_ip = "***.***.*.**"
    resolve_dns = mon_ip 
    DNS_CACHE = {}
    DNS_CACHE["user_name"] = resolve_dns
    prv_getaddrinfo = socket.getaddrinfo
    def new_getaddrinfo(*args):
        if args[0] in DNS_CACHE:
            return prv_getaddrinfo(DNS_CACHE[args[0]], *args[1:])
        return prv_getaddrinfo(*args)
    socket.getaddrinfo = new_getaddrinfo
    J'ai trouvé ce code sur le net et je comprends à peu près qu'il surcharge une méthode du module socket pour que requests puisse lié mon user_name à mon adresse IP. Seulement, ce code ne fonctionne plus maintenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\...\Python\Python37-32\lib\site-packages\urllib3\connection.py:467: SubjectAltNameWarning: Certificate for "my_host_name" has no `subjectAltName`, falling back to check for a `commonName` for now. This feature is being removed by major browsers and deprecated by RFC 2818. (See https://github.com/urllib3/urllib3/issues/497 for details.)
      SubjectAltNameWarning.
    (j'ai remplacé le host name par my_host_name)

    J'avoue ne pas comprendre cette erreur. J'ai donc essayé de me connecté à la cible avec l'adresse IP directement mais j'ai le message suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SSLCertVerificationError("hostname '***.***.*.**' doesn't match 'my_host_name'"))
    J'ai l'impression que je n'ai pas le choix, il faut que je trouve une alternative à la surcharge de socket.getaddrinfo afin de me connecter via l'url suivant :
    'https://user_name:port_number/ewsgi/list/maint_reconf/'
    Je ne sais pas vraiment quoi faire étant donné que je trouve pas d'exemple de cette situation dans la doc de Requests ni sur les forums. Voilà pourquoi je m'en remets à vous en espérant avoir été clair dans la description de mon problème.

    Je vous remercie par avance du temps que vous m'accorderez et vous souhaite un bon début de semaine à tous !
    William

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Si vous utilisez requests, jetez un œil à la partie de la documentation sur ce sujet....

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre à l'essai
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2017
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2017
    Messages : 16
    Points : 15
    Points
    15
    Par défaut
    Il s'emblerai que le problème soit lié à la carte et non à mon soft.
    C'est ce qui me semblait le plus logique étant donné que le programme fonctionnait sur une autre carte...
    Je clos ce poste et m'excuse du temps perdu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/08/2011, 14h34
  2. [Vxi3] Se connecter en HTTP avec Rich client
    Par c.cartry dans le forum Deski
    Réponses: 5
    Dernier message: 05/02/2010, 11h06
  3. Passage d'un paramètre avec quote pour une procédure dynamique
    Par dcarroz dans le forum Développement
    Réponses: 7
    Dernier message: 26/01/2010, 11h06
  4. Réponses: 2
    Dernier message: 24/08/2008, 18h58
  5. Réponses: 4
    Dernier message: 31/08/2007, 00h54

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