Toon posts:

Python: SSL Error hostname does not match

Pagina: 1
Acties:

Onderwerpen

Vraag


  • KlaasJanBolhuis
  • Registratie: November 2020
  • Laatst online: 14:45
Mijn vraag
Ik krijg de navolgende foutmelding in python als ik contact wil maken via requests.get met een kastje dat mijn screens met een app kan aansturen.

requests.exceptions.SSLError: HTTPSConnectionPool(host='gateway-XXXX-XXXX-XXXX.local', port=8443): Max retries exceeded with url: /enduser-mobile-web/1/enduserAPI/setup/devices/XXXX-XXXX-XXXX/states (Caused by SSLError(SSLCertVerificationError("hostname 'gateway-XXXX-XXXX-XXXX.local' doesn't match 'XXXX-XXXX-XXX.local'")))

Ik heb een Raspberry en een Somfy Tahoma Switch met een lokale API. Ik heb de code overgenomen van https://github.com/Somfy-...-Developer-Mode/issues/32 en de instructies over genomen van de readme.md.

Wat ik begrijp is het certificaat voor hostnaam: XXXX-XXXX-XXXX.local terwijl de hostnaam gateway-XXXX-XXXX-XXXX.local is. Waar moet ik beginnen met zoeken om dit op te lossen?

Nb: Onderstaand het relevante stukje code dat deze melding veroorzaakt:
## get device list
url_lst = "https://gateway-XXXX-XXXX-XXXX.local:8443/enduser-mobile-web/1/enduserAPI/setup/devices/XXXX-XXXX-XXXX/states"
headers_lst = {"Content-Type": "application/json", "Authorization": "Bearer " + r_gen.json()['token']}
r_lst = s.get(url_lst, headers=headers_lst)

...

Alle reacties


  • RobIII
  • Registratie: December 2001
  • Laatst online: 18:35

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Heb je dit ook gedaan dan?

Kopieer de .crt die je daar vindt naar /usr/local/share/ca-certificates/ en run sudo update-ca-certificates. That should do it.

[Voor 39% gewijzigd door RobIII op 29-06-2022 21:55]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • KlaasJanBolhuis
  • Registratie: November 2020
  • Laatst online: 14:45
Dank voor je reactie; Ja, ik heb dat gedaan. Er moest wel een verwijzing toegevoegd worden aan de .conf bestand. Er kwam een melding dat het dubbel was, maar dat het certificaat toegevoegd is.

Het vreemde is het verschil met het woord ‘gateway’ in de hostname in de foutmelding.

  • RobIII
  • Registratie: December 2001
  • Laatst online: 18:35

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

KlaasJanBolhuis schreef op woensdag 29 juni 2022 @ 23:20:
Dank voor je reactie; Ja, ik heb dat gedaan. Er moest wel een verwijzing toegevoegd worden aan de .conf bestand. Er kwam een melding dat het dubbel was, maar dat het certificaat toegevoegd is.

Het vreemde is het verschil met het woord ‘gateway’ in de hostname in de foutmelding.
Ik vermoed dat 't een wildcard certificaat is?
Het is gewoon een Root CA certificaat; dat betekent dat alle certificaten die zeggen te zijn getekend door dat certificaat zouden vertrouwd moeten zijn mits je dat Root CA certificaat dus goed geïnstalleerd hebt.

Ik zie ook nog dit en dit issue. Lijkt erop dat de makkelijkste fix is gewoon een entry in je hostsfile aanmaken. Iets lomper: SSL host verificatie gewoon uitschakelen; toch niet heel boeiend in je local LAN...

[Voor 40% gewijzigd door RobIII op 29-06-2022 23:42]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • Barreljan
  • Registratie: December 2001
  • Laatst online: 03-02 15:55

Barreljan

...Zoom-Zoom...

RobIII schreef op woensdag 29 juni 2022 @ 23:35:
[...]
Iets lomper: SSL host verificatie gewoon uitschakelen; toch niet heel boeiend in je local LAN...
Zoiets inderdaad met 'verify=False', voorbeeldje met API request

Python:
1
2
3
4
5
6
7
import requests

link = 'https://something.tld/api/blabla'
headers = {'X-Auth-Token': 'ab4ffffd3d2aaa655a7',
           'Accept': 'application/json'}
result = requests.get(link, headers=headers, verify=False)
data = result.json()

Time Attacker met de Mazda 323F 2.5 V6 J-spec | PV output


  • Ben(V)
  • Registratie: December 2013
  • Laatst online: 15:58
Je kunt beter certifi installeren om een client certificate te krijgen en dat met de request mee te sturen.

Dus iets van:
pip install certifi
en dan in python:
Python:
1
2
3
4
5
import requests
import certifi

link = 'https://something.tld/api/blabla'
Data = requests.get(link, verify=certifi.where()).json()

[Voor 4% gewijzigd door Ben(V) op 30-06-2022 16:18]

All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.


  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 18:19

DataGhost

iPL dev

Ben(V) schreef op donderdag 30 juni 2022 @ 16:16:
Je kunt beter certifi installeren om een client certificate te krijgen en dat met de request mee te sturen.

Dus iets van:

[...]


en dan in python:
Python:
1
2
3
4
5
import requests
import certifi

link = 'https://something.tld/api/blabla'
Data = requests.get(link, verify=certifi.where()).json()
Hoe precies lost dat een verkeerde/onverwachte CN in een server-certificaat op? En ik zou je nog eens inlezen in certifi want dat heeft helemaal niks met client certificates te maken, noch is het zo dat de code die jij post "wat meestuurt". Bovendien komt certifi juist voort uit requests (en is het een dependency ervan) dus voegt het niks toe behalve extra code.

Voor TS: de host waarnaar je verbindt is een andere dan in het certificaat staat. Dat is slechts op twee manieren op te lossen, of een DNS/hosts-entry die overeenkomt met het certificaat, of een certificaat dat overeenkomt met de DNS/hosts-entry. De eerste manier is waarschijnlijk het makkelijkst.

[Voor 28% gewijzigd door DataGhost op 30-06-2022 16:30]


  • RobIII
  • Registratie: December 2001
  • Laatst online: 18:35

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

DataGhost schreef op donderdag 30 juni 2022 @ 16:25:
Voor TS: de host waarnaar je verbindt is een andere dan in het certificaat staat. Dat is slechts op twee manieren op te lossen [...]
Of dus gewoon je vingers in je oren steken en heel hard "lalalala" zingen (verify=False) :+ Of dat wenselijk is is vers 2.

[Voor 3% gewijzigd door RobIII op 30-06-2022 16:36]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


Acties:
  • 0Henk 'm!

  • KlaasJanBolhuis
  • Registratie: November 2020
  • Laatst online: 14:45
Zo te zien in de issues op Github ben ik niet de enige die hier mee zit te worstelen. In de hostfile heb ik een verwijzing gemaakt en levert een andere foutmelding op 'failed to establish new connection'. Ook het extra argument 'verification = false' geeft een foutmelding. Uit de Issues op Github heb ik gezien dat de vraag gesteld is om het certificaat aan te passen, en ga dit dan maar afwachten.

Ondertussen doe ik vanuit https://github.com/iMicknl/python-overkiz-api een andere / nieuwe poging om mijn screens met Python aan te sturen. Deze komt niet met certificaat issues, (of de aanpassing in de hostfile heeft dit opgelost). Inmiddels heb ik mijn aangesloten apparaten in beeld.

Bedankt voor de reacties
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee