ReceiveHTTPMemory mit HTTPS und Self-signed Cert

Für allgemeine Fragen zur Programmierung mit PureBasic.
Wayne-C
Beiträge: 12
Registriert: 13.11.2015 14:59

ReceiveHTTPMemory mit HTTPS und Self-signed Cert

Beitrag von Wayne-C »

Hallo PureBasic Community

Stimmt es dass ReceiveHTTPMemory() für eine https:// - URL nicht funktioniert wenn der Server ein self-signed (d.h. nicht gültiges) Zertifikat besitzt? Gibt es einen Workaround?

Danke & Grüsse
Wayne-C
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8812
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: ReceiveHTTPMemory mit HTTPS und Self-signed Cert

Beitrag von NicTheQuick »

Ich wüsste jetzt kein Workaround.

Ich will aber noch etwas richtig stellen: "self-signed" heißt einfach nur "selbst signiert" und nicht "ungültig". Denn gültig und sicher ist es trotzdem, solange man der Domain vertraut.
Wayne-C
Beiträge: 12
Registriert: 13.11.2015 14:59

Re: ReceiveHTTPMemory mit HTTPS und Self-signed Cert

Beitrag von Wayne-C »

Habe etwas zusammengebastelt, jetzt funktioniert es, einfach mit einem Umweg über das Filesystem...

So wär's schön:

Code: Alles auswählen

URL = "https://www.test.ch/"
Html.s = ""
*Buffer = ReceiveHTTPMemory(URL)
If *Buffer
	Size = MemorySize(*Buffer)
	Html = PeekS(*Buffer, Size, #PB_UTF8)
	FreeMemory(*Buffer)
EndIf
Debug Html
Nice to have wäre ein Parameter #PB_Ignore_BadCerts in ReceiveHTTPMemory:

Code: Alles auswählen

*Buffer = ReceiveHTTPMemory(URL, #PB_Ignore_BadCerts)
So funktioniert's:

Code: Alles auswählen

URL = "https://www.test.ch/"
Html.s = ""
TempPath.s = Space(#MAX_PATH)
GetTempPath_(#MAX_PATH, @TempPath)
TempFile.s = Space(#MAX_PATH)
GetTempFileName_(TempPath, "EXE-", 0, TempFile)
DeleteUrlCacheEntry_(URL)
If URLDownloadToFile_(0, URL, TempFile, 0, 0) = #S_OK
	If ReadFile(0, TempFile)
		Length.l = Lof(0)
		*MemoryID = AllocateMemory(Length)
		If *MemoryID
			ReadData(0, *MemoryID, Length)
			Html = PeekS(*MemoryID, Length, #PB_UTF8)
			FreeMemory(*MemoryID)
		EndIf
		CloseFile(0)
	EndIf
	DeleteFile(TempFile)
EndIf
Debug Html
Antworten