TbeCBCertificateInfo
Die Klasse TbeCBCertificateInfo dient zu Verifizierung einem SSL (HTTPS) Zertifikat.
Eigenschaften | Beschreibung |
---|---|
CbSender:O | Objekt der TbeCbHTTP, TbeCBHTTPGet oder andere Klasse |
CbDepth:N | SSL-Certificate Depth. Wenn Tiefe 1 nicht gültig ist, wird nicht gültig auch Tiefe 0. Zertifikat sind validiert von runter oben. |
CbVersion:N | Version des Zertifikats |
CbSerialNumber:C | Hexadecimal Serien-Nummer |
CbSignatureAlgorithmAsNID:N | SSL-Name ID's |
CbSignatureAlgorithmAsString:C | SSL-Long Names |
CbIssuerString:C | Aussteller des Zertifikats |
CbValidFromInGMT:D | Gültig-Von im GMT-Zeit |
CbValidToInGMT:D | Gültig-Bis im GMT-Zeit |
CbSubjectString:C | Eigentümer des Zertifikats |
CbThumbprintAsMD5:L | Thumbprint = Daumenabdruck des Zertifikats als MD5 Hash |
CbThumbprintAsSHA1:C | Thumbprint = Daumenabdruck des Zertifikats als SHA1 Hash |
CbThumbprintAsSHA256:C | Thumbprint = Daumenabdruck des Zertifikats als SHA256 Hash |
CbErrorValue | Verifizierung-Fehler, falls keine Fehler während der Verifizierung passiert, wird dies Wert 0 haben |
CbErrorString | Verifizierung-Fehler im lesbaren Format, falls keine Fehler während der Verifizierung passiert, wird dies leer Wert haben |
CbAccepted:L | Ausgabe-Wert, könnte auf False gesetzt werden, falls wir sollen dieses Zertifikat ablehnen. Könnte auch False von Anfang haben, falls den Zertifikat nicht gültig ist, und er würde automatisch abgelehnt. |
CbType:N | Typ der Verifizierung - je nach Typ sind verschiedene Eigenschaften zur Verfügung gestellt |
CbURL:C | Aufgerufener URL - falls vorhanden |
Funktionen / Methoden | |
---|---|
CbSaveToFile(sFileName:S) | Speichert Certificate zum eingegeben *.pem Datei. Die Datei wird überschrieben. Diese Funktion ist für den typ |
Beispiel
function HTTPSValidate(oCert:O),
Writeln('**************************'),
Writeln('Depth: ' + Str(oCert.CbDepth)),
Writeln('Version: ' + Str(oCert.CbVersion)),
Writeln('SerialNumber: ' + oCert.CbSerialNumber),
Writeln('SignatureAlgorithmAsNID: ' + Str(oCert.CbSignatureAlgorithmAsNID)),
Writeln('SignatureAlgorithmAsString: ' + oCert.CbSignatureAlgorithmAsString),
Writeln('IssuerString: ' + oCert.CbIssuerString),
Writeln('ValidFromInGMT: ' + DToS(oCert.CbValidFromInGMT)),
Writeln('ValidToInGMT: ' + DToS(oCert.CbValidToInGMT)),
Writeln('SubjectString: ' + oCert.CbSubjectString),
Writeln('ThumbprintAsMD5: ' + oCert.CbThumbprintAsMD5),
Writeln('ThumbprintAsSHA1: ' + oCert.CbThumbprintAsSHA1),
Writeln('ThumbprintAsSHA256: ' + oCert.CbThumbprintAsSHA256),
Writeln('Von SSL Accepted: ' + iif(oCerificate.CbAccepted, 'true', 'false')),
Writeln('Error: ' + Str(oCerificate.CbErrorValue)),
Writeln('ErrorString: ' + oCerificate.CbErrorString),
oCert.CbSaveToFile('C:\temp\cert\' + oCert.CbThumbprintAsMD5 + '.pem'),
oCert.CbAccepted := true,
end,
function HTTPSDeny(oCert:O)
oCert.CbAccepted := false,
end,
//******************************************************************************
// Liefert als Ergebnis den Inhalt der HTML-Seite
// Im Fehlerfall enthält cHTTPGetResult alle verfügbaren Informationen
// über den aufgetretenen Fehler.
// Im Fall von einem Redirect, ist der Inhalt der neue HTML-Seite das Ergebnis
//******************************************************************************
function HTTPSRequest(lUseRedirect:L, lAllowRedirect:L, cValidate:C)
|cURL, oHTTP, cDivider, cResult|
cResult := '',
cURL := 'https://www.google.com',
cDivider := Replicate('-', 80),
oHTTP := CreateObject('TBeCbHTTP', 'MyHttp'),
startseq,
oHTTP.CbConnectTimeout := 2000,
oHTTP.CbReadTimeout := 2000,
oHTTP.CbUserAgent := 'Mozilla/4.0 (compatible)',
CollAdd(oHTTP.CbHeaders, 'be-test:beheader'),
case cValidate
of 'event'::
AssignEvent(oHTTP, 'CbOnValidateCertificate', 'HTTPSValidate'),
of 'no-event'::
AssignEvent(oHTTP, 'CbOnValidateCertificate', 'HTTPSDeny'),
otherwise
oHTTP.CbValidateServerCertificate := false
endcase,
startseq
if lUseRedirect then
oHTTP.CbGetURLHandleRedirects(cURL, lAllowRedirect),
else
oHTTP.CbGetURL(cURL), // HTTP-Request auslösen
endif,
cResult := oHTTP.CbHTTPBody,
onerror
cResult :=
GetErrorText() + crlf + cDivider + crlf +
'ErrorHTTPStatusCode = ' + Str(oHTTP.CbErrorHTTPStatusCode) + crlf + cDivider + crlf +
'ErrorHTTPStatusText = ' + oHTTP.CbErrorHTTPStatusText + crlf + cDivider + crlf +
'ErrorHTTPBody = ' + oHTTP.CbErrorHTTPBody,
stopseq,
always,
DestroyObject(oHTTP),
stopseq,
Result := cResult,
end,
writeln('--- Verifizierung durch Event ---'),
writeln( HTTPSRequest(true, true, 'event') ),
writeln('--- Keine Verifizierung ---'),
writeln( HTTPSRequest(true, true, '') ),
writeln('--- Verifizierung abgelehnt ---'),
writeln( HTTPSRequest(true, true, 'no-event') ),