Online Store
Mrz 12

Überprüfung digitaler Zertifikate – RESTful Web Services API

[Vc_row] [Vc_column] [Vc_column_text]

Verifizierer für digitale Zertifikate, RESTful-Webdienst-API

[DE] Benutzerhandbuch
 
"X.509 Verifier" ist ein RESTful-Webdienst, der dazu dienen kann, die X.509-Zertifikate und signierten PDF-Dateien zu validieren sowie die Übereinstimmung des Inhalts von Zertifikaten mit der Gesetzgebung der Republik Serbien zu überprüfen.
Der RESTful-Webdienst "X.509 Verifier" besteht aus 2 REST-APIs, die sich auf dem Host befinden
: http://signatureverifier.d-logic.com und die Pfade der Skripte sind:

  1. /x509-Verifier.php
  2. /pdf-sgn-verifier.php

 

REST-API: x509-Verifier

API-Version: 1.0

Die PEM-Datei, deren Inhalt ein X.509-Zertifikat der Version 3 sein muss, wird an diese API gesendet. Nach der Überprüfung des Zertifikats gibt die API das Ergebnis der Überprüfung in der JSON-codierten Zeichenfolge zurück.

HTTP-Serveranforderung

Host + Pfad: http://signatureverifier.d-logic.com/x509-verifier.php
Methode:
POST-Header (obligatorisch):
Content-Type: multipart/form-data; boundary
=RANDOM_STRING_BOUNDARY Hauptteil
: —RANDOM_STRING_BOUNDARY Content-Disposition: Formulardaten; name="Datei"; Dateiname="file_name.pem" Inhaltstyp
:

application/octet-stream

[FILE_BINARY_DATA]
— RANDOM_STRING_BOUNDARY
Content-Disposition: Formulardaten; name="Abfrage"

[JSON_ENCODED_PARAMETERS]
-RANDOM_STRING_BOUNDARY–
{END}
       

Beschreibung der HTTP-Serveranforderung

RANDOM_STRING_BOUNDARY ist eine Zeichenfolge, die bei jeder neuen Anforderung einen anderen und, wenn möglich, eindeutigen Wert haben muss. In JavaScript wäre beispielsweise eine gute Praxis für die Erfassung von RANDOM_STRING_BOUNDARY:

var boundary = Math.random().toString().substr(2);

 
[FILE_BINARY_DATA] ist ein binärer Inhalt der gewählten 'file_name.pem'-Datei.
 
[JSON_ENCODED_PARAMETERS] sind JSON-codierte Parameter, die das folgende Format erfüllen müssen:

{
"Vorgang": "überprüfen",
"user_id": 123,
"security_token": ""
}

und die gute Vorgehensweise ist, dass diese JSON-codierte Zeichenfolge keine Leerzeichen enthält, dh in JavaScript gebildet werden sollen, z. B. mit dem folgenden Code:

var params, json;
params= { operation: "verify", user_id: 123, security_token: "" };
json = JSON.stringify(Parameter);

 
Parameter sind
: "Operation": "verify" – Operation "verify" ist die einzige Operation, die derzeit unterstützt wird.
"user_id": 123 numerischer Parameter, ganzzahliger Typ, stellt die Benutzeridentifikationsnummer dar (sie wird in API-Version 1.0 nicht verwendet, ist jedoch obligatorisch und für die zukünftige Verwendung reserviert). In API Version 1.0 kann 0 sein.
"security_token": " – Zeichenfolge, die Paare der hexadezimalen Ziffern ohne ein sogenanntes Trennzeichen enthalten sollte (sie wird in der API-Version 1.0 nicht verwendet, ist aber obligatorisch und für die zukünftige Verwendung reserviert). In API Version 1.0 kann eine leere Zeichenfolge sein.
Wie auch immer, in JavaScript ist es nicht notwendig, den Inhalt, d.h. den HTTP-Körper, direkt zu verwalten. Es wird empfohlen, die FormData-Klasse als Beispiel zu verwenden, die Sie aus dem Git-Repository unter der folgenden URL herunterladen können: /code/NFC-RFID-reader-SDK/signature_verifier_jc_example.git
Es gibt auch Beispiele für die Verwendung der cURL-Unterstützung von PHP, um Anforderungen an diese REST-APIs zu senden:

/code/digital_signature_sdk/php_example.git

 

HTTP-Serverantwort

Nach der Überprüfung des X.509-Zertifikats gibt der Server eine JSON-codierte Zeichenfolge zurück, die (in API-Version 1.0) 2 Argumente enthält:

{"status":"STATUS_STRING","msg":"MESSAGE_STRING"}

 
Bei ungültiger Anforderung lautet die Serverantwort:

HTTP/1.1 200 OK
Content-Type: Application/json

 

{"status":"Error: wrong POST parameters.","msg":""}

 
Wenn die Überprüfung erfolgreich ist, muss STATUS_STRING wie folgt aussehen:

"OK"

 
während die MESSAGE_STRING einen gültig formatierten Datensatz enthält, der HTML-Formatierungs-Tags sowie HTML-Tags für eine neue Zeile enthält, so dass diese Nachricht direkt in einem beliebigen HTML-Container (z. B. <div>) platziert werden kann.
 
Jede Antwort, deren STATUS_STRING sich von "OK" unterscheidet, wird als Prüfung gezählt, deren Ergebnis nicht erfolgreich ist, und in diesem Fall, wenn STATUS_STRING von den "Fehler: falsche POST-Parameter" abweicht. MESSAGE_STRING enthält Details der Zertifikatsprüfung, die angezeigt werden sollten.

 

REST-API: pdf-sgn-verifier

API-Version: 1.0

PDF-Datei, deren Inhalt signiert werden muss PDF-Dokument, wird an diese API gesendet. Signaturformate können "PKCS#7 – Detached" oder "CAdES Equivalent" sein. Nach der Überprüfung der signierten Datei gibt die API das Ergebnis der Überprüfung in der JSON-codierten Zeichenfolge zurück.

HTTP-Serveranforderung

Host + Pfad: http://signatureverifier.d-logic.com/pdf-sgn-verifier.php
Methode: POST-Header
(obligatorisch):
Content-Type: multipart/form-data; boundary=RANDOM_STRING_BOUNDARY
Hauptteil
: —RANDOM_STRING_BOUNDARY
Content-Disposition: Formulardaten; name="Datei"; Dateiname="file_name.pdf"
Inhaltstyp:

application/pdf
[FILE_BINARY_DATA]
-RANDOM_ STRING_BOUNDARY
Content-Disposition: Formulardaten; name="Abfrage"

[JSON_ENCODED_PARAMETERS]
-RANDOM_STRING_BOUNDARY–
{END}      

 

Beschreibung der HTTP-Serveranforderung

RANDOM_STRING_BOUNDARY ist eine Zeichenfolge, die bei jeder neuen Anforderung einen anderen und, wenn möglich, eindeutigen Wert haben muss. In JavaScript wäre beispielsweise eine gute Praxis für die Erfassung von RANDOM_STRING_BOUNDARY:

var boundary = Math.random().toString().substr(2);

 
[FILE_BINARY_DATA] ist ein binärer Inhalt der ausgewählten 'file_name.pdf'-Datei.
 
[JSON_ENCODED_PARAMETERS] sind JSON-codierte Parameter, die das folgende Format erfüllen müssen:

{
"Vorgang": "überprüfen",
"user_id": 123,
"security_token": ""
}

und die gute Vorgehensweise ist, dass diese JSON-codierte Zeichenfolge keine Leerzeichen enthält, dh in JavaScript gebildet werden sollen, z. B. mit dem folgenden Code:

var params, json;
params= { operation: "verify", user_id: 123, security_token: "" };
json = JSON.stringify(Parameter);

 
Parameter sind
: "Operation": "verify" – Operation "verify" ist die einzige Operation, die derzeit unterstützt wird.
"user_id": 123 numerischer Parameter, ganzzahliger Typ, stellt die Benutzeridentifikationsnummer dar (sie wird in API-Version 1.0 nicht verwendet, ist jedoch obligatorisch und für die zukünftige Verwendung reserviert). In API Version 1.0 kann 0 sein.
"security_token": " – Zeichenfolge, die Paare der hexadezimalen Ziffern ohne sogenanntes Trennzeichen enthalten sollte (sie wird in der API-Version 1.0 nicht verwendet, ist aber obligatorisch und für die zukünftige Verwendung reserviert). In API Version 1.0 kann eine leere Zeichenfolge sein.
Wie auch immer, in JavaScript ist es nicht notwendig, den Inhalt, d.h. den HTTP-Körper, direkt zu verwalten. Es wird empfohlen, die FormData-Klasse als Beispiel zu verwenden, die Sie aus dem Git-Repository unter der folgenden URL herunterladen können: /code/NFC-RFID-reader-SDK/signature_verifier_jc_example.git
Es gibt auch Beispiele für die Verwendung der cURL-Unterstützung von PHP, um Anforderungen an diese REST-APIs zu senden:

/code/digital_signature_sdk/php_example.git

 

HTTP-Serverantwort

Nach Überprüfung der PDF-Datei und der Signatur gibt der Server eine JSON-codierte Zeichenfolge zurück, die (in API-Version 1.0) 2 Argumente enthält:

{"status":"STATUS_STRING","msg":"MESSAGE_STRING"}

 
Bei ungültiger Anforderung lautet die Serverantwort:

HTTP/1.1 200 OK
Content-Type: Application/json

 

{"status":"Error: wrong POST parameters.","msg":""}

 
Wenn die Überprüfung erfolgreich ist, muss STATUS_STRING wie folgt aussehen:

"PDF-Signatur ist GÜLTIG"

 
während die MESSAGE_STRING einen gültig formatierten Datensatz enthält, der HTML-Formatierungs-Tags sowie HTML-Tags für eine neue Zeile enthält, so dass diese Nachricht direkt in einem beliebigen HTML-Container (z. B. <div>) platziert werden kann.
 
Im Gegensatz zur x509-Verifier-API haben wir hier Antworten mit STATUS_STRING, die sich von der "PDF-Signatur ist GÜLTIG" unterscheiden, die als erfolgloses Verifizierungsergebnis zählte, aber in diesen Fällen enthält MESSAGE_STRING keine Details. Dies sind die Fälle, wenn:

STATUS_STRING = "Fehler: PDF wurde nach dem Signieren geändert!"
STATUS_STRING = "Fehler: Falsches PDF-Format (beim Suchen von Signaturdaten)"
STATUS_STRING = "Info: PDF-Datei enthält keine digitale Signatur"
STATUS_STRING = "Fehler: Falsches PKCS#7-Format (fehlende "zu signierende" Daten)"

 
Der Fall, wenn es ist

STATUS_STRING = "Validierung digitaler Signaturen fehlgeschlagen"

Das bedeutet, dass es sich um eine Überprüfung der PDF-Datei handelt und die Signatur vollständig ausgefüllt ist , das Ergebnis jedoch nicht erfolgreich ist. In diesem Fall enthalten die MESSAGE_STRING immer Details der Prüfung, die angezeigt werden sollen. In diesem Fall enthält MESSAGE_STRING einen gültig formatierten Datensatz, der HTML-Formatierungs-Tags enthält, sowie HTML-Tags für eine neue Zeile, so dass diese Nachricht direkt in einem beliebigen HTML-Container (z. B. <div>) platziert werden kann.

Anhang: "Restlet Client" – Exportierte Dateien der Google Chrome-Browsererweiterung:

Der begleitende Teil dieses Handbuchs enthält auch JSON-Dateien, die Profile für die "Google Chrome" -Erweiterung "Restlet Client" enthalten. Diese Dateien sind x509-verifier.json und pdf-sgn-verifier.json und enthalten Profile für die REST-APIs x509-verifier bzw. pdf-sgn-verifier. Sie können nach der Installation von "Restlet Client" "Google Chrome" -Erweiterungen verwendet werden.
 
"Restlet Client" hat einen bekannten Fehler, der sich dadurch manifestiert, dass beim Laden des Profils immer der Parametertyp body form von "File" in "Text" geändert wird. Die Problemumgehung besteht darin, den geänderten Typ wieder auf "Datei" umzuschalten und dann die gewünschte Datei auszuwählen.
[/vc_column_text] [/vc_column] [/vc_row]

[vc _ column width="1/3"] [vc _ column _ text]

HARDWARE-PRODUKTE

[/vc_column_text] [/vc_column] [vc _ column width="1/3"] [vc _ column _ text]

SDK-SOFTWARE

[/vc_column_text] [/vc_column]