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 :
Seulement en TLS, je ne comprends pas vraiment comment requests fonctionne dans la situation imposé par ma carte.
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)
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 :
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
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 remplacé le host name par my_host_name)
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'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 :
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SSLCertVerificationError("hostname '***.***.*.**' doesn't match 'my_host_name'"))
'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
Partager