API-Referenz für Remote-Codesignatur
Dieser Artikel richtet sich an Entwickler, die Remote-Signaturfunktionen direkt integrieren müssen, und beschreibt die folgenden zwei Schnittstellen:
POST /v1/codesign/sign:Übermitteln Sie den zu signierenden Hash-Digest und erhalten Sie das RSA PKCS#1-Signaturergebnis.POST /v1/codesign/report-sign:Melden Sie das endgültige Verarbeitungsergebnis des Clients (ohne Auswirkung auf die Signaturzählung).
Zugriffsadresse
| Umgebung | Adresse |
|---|---|
| Produktionsumgebung (Standard) | https://ssl.face.racent.com |
| NICSRS-Umgebung | https://ssl.face.nicsrs.com |
Für Adressen anderer Umgebungen gelten die von der Lieferung oder dem Betrieb bereitgestellten Adressen.
Allgemeine Konventionen
Anforderungsformat
- Protokoll: HTTPS
- Methode:
POST - Body: JSON
- Header:
Content-Type: application/json
Accept: application/json
Authorization: Basic <base64(accessKey:accessSecret)>
鉴权
Die Schnittstelle verwendet HTTP Basic Auth:
- Benutzername: Access Key
- Passwort: Access Secret
Erzeugen des Authorization-Headers:
printf "%s:%s" "$ACCESS_KEY" "$ACCESS_SECRET" | base64
Allgemeine Antwortstruktur
{
"code": 0,
"message": "ok",
"data": {}
}
| Feld | Typ | Bedeutung |
|---|---|---|
code | integer | Geschäftsstatuscode. 0 bedeutet Erfolg, nicht 0 bedeutet Geschäftsf ehler. |
message | string | Geschäftsstatusbeschreibung, bei Fehler die Fehlerbeschreibung. |
data | object | Schnittstellengeschäftsdaten. |
Der Aufrufer sollte sowohl den HTTP-Statuscode als auch den Geschäftsstatuscode verarbeiten:
- HTTP nicht 2xx → gemäß HTTP-Fehler behandeln.
- HTTP 2xx und
code != 0→ gemäß Geschäftsf ehler behandeln. - HTTP 2xx und
code == 0→ das entsprechendedatalesen.
Signaturschnittstelle
Schnittstellenbeschreibung
POST /v1/codesign/sign
Übermitteln Sie die Rohbytes des zu signierenden Hashs (Base64-kodiert). Der Remote-Dienst führt die RSA-PKCS#1-Signatur mit dem angegebenen Zertifikat aus und gibt das Ergebnis zurück.
/v1/codesign/sign Eine erfolgreiche Rückgabe des Signaturinhalts gilt als erfolgreiche Signatur, und die Signaturanzahl wird um 1 erhöht. Fehlgeschlagene Anfragen verbrauchen keine Signaturanzahl. Ob report-sign aufgerufen wird, hat keinen Einfluss auf die Zählung.
Anforderungsparameter
{
"code": "CERT_CODE",
"digest": "BASE64_ENCODED_HASH",
"algorithm": "SHA256",
"padding": "PKCS1",
"extra": {
"platform": "windows/amd64",
"version": "1.0.0",
"revision": "abcdef0",
"time": "2026-06-12T10:00:00+08:00",
"hostname": "build-host-01",
"signing_filename": "Example.exe",
"signing_filesize": 1048576
}
}
| Feld | Typ | Erforderlich | Bedeutung |
|---|---|---|---|
code | string | Ja | Zertifikatsnummer, zur Auswahl des remote-Signaturzertifikats. |
digest | string | Ja | Base64-Kodierung der Original-Bytes des zu signierenden Hashs. Der Aufrufer muss den Hash lokal gemäß den Anforderungen der Zieldatei und des Signaturtools berechnen. |
algorithm | string | Ja | Hash-Algorithmus, unterstützt SHA1, SHA256, SHA384, SHA512. |
padding | string | Ja | RSA-Paddungsmodus, derzeit festgelegt auf PKCS1. |
extra | object | Nein | Kontextinformationen des Clients, verwendet für Signaturaufzeichnungen, Prüfung und Fehlerbehebung. |
Feldbeschreibung für extra:
| Feld | Typ | Bedeutung |
|---|---|---|
platform | string | Client-Plattform, z. B. windows/amd64, linux/amd64. |
version | string | Client-Version. |
revision | string | Revisions-ID der Client-Konstruktion. |
time | string | Zeitpunkt der Client-Konstruktion oder der Anfrage. |
hostname | string | Hostname, von dem die Signatur initiiert wurde. |
signing_filename | string | Dateiname oder Pfad der signierten Datei, Empfehlung zur Maskierung gemäß Sicherheitsrichtlinien. |
signing_filesize | integer | Größe der signierten Datei (Bytes). |
Anfragebeispiel
curl -u "$ACCESS_KEY:$ACCESS_SECRET" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"code": "CERT_CODE",
"digest": "BASE64_ENCODED_HASH",
"algorithm": "SHA256",
"padding": "PKCS1",
"extra": {
"platform": "windows/amd64",
"version": "1.0.0",
"hostname": "build-host-01",
"signing_filename": "Example.exe",
"signing_filesize": 1048576
}
}' \
https://ssl.face.racent.com/v1/codesign/sign
Erfolgreiche Antwort
{
"code": 0,
"message": "ok",
"data": {
"id": "735985894427246592",
"signature": "BASE64_ENCODED_SIGNATURE"
}
}
| 字段 | 类型 | 含义 |
|---|---|---|
id | string | ID des Signaturdatensatzes, verwendet beim Aufruf von report-sign. |
signature | string | Base64-Kodierung des RSA-Signaturergebnisses. |
Meldung des Signaturergebnisses
Schnittstellenbeschreibung
POST /v1/codesign/report-sign
Der Client kann nach dem Erhalt des Remote-Signaturergebnisses beim lokalen Verarbeiten, Schreiben oder Zurückgeben an den Aufrufer fehlschlagen. Diese Schnittstelle dient dazu, den endgültigen Verarbeitungsstatus des Clients an den Server zurückzumelden, um die Anzeige von Signaturaufzeichnungen und die Prüfung zu erleichtern.
Diese Schnittstelle protokolliert nur das Verarbeitungsergebnis des Clients und ändert nicht das Zählungsergebnis von /v1/codesign/sign. Das Aufrufen dieser Schnittstelle beeinflusst nicht die Anzahl erfolgreicher Signaturen.
Anfrageparameter
{
"id": "735985894427246592",
"status": 1
}
| Feld | Typ | erforderlich | Bedeutung |
|---|---|---|---|
id | string | ja | Das von /v1/codesign/sign zurückgegebene data.id. |
status | integer | ja | Endgültiger Verarbeitungsstatus des Clients: 1 erfolgreich, 2 fehlgeschlagen. |
Beispiel für eine Anfrage
curl -u "$ACCESS_KEY:$ACCESS_SECRET" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"id": "735985894427246592",
"status": 1
}' \
https://ssl.face.racent.com/v1/codesign/report-sign
Erfolgreiche Antwort
{
"code": 0,
"message": "ok",
"data": null
}
Beispiel für Fehlerantworten
Authentifizierungsfehler:
{
"code": 401,
"message": "unauthorized",
"data": null
}
Parameterfehler:
{
"code": 400,
"message": "invalid request",
"data": null
}
Die konkreten Fehlercodes und Fehlermeldungen richten sich nach der tatsächlichen Serverantwort. Integrationen sollten sich nicht auf feste Fehlertexte für Geschäftslogik-Verzweigungen verlassen.
Integrationsempfehlungen
- Bewahren Sie das Access Secret sorgfältig auf und schreiben Sie es nicht in Logs, Absturzberichte oder Frontend-Seiten.
digestmuss die Base64-Kodierung der rohen Hash-Bytes sein, kein Hexadezimal-String und auch nicht der vollständige Dateiinhalt.algorithmmuss mit dem tatsächlichen Hash-Algorithmus vondigestübereinstimmen.- Das aktuelle Padding-Verfahren ist fest auf
PKCS1eingestellt; übergeben Sie keine anderen Werte. - Die Felder
digestundsignaturekönnen lang sein; in Logs wird empfohlen, nur die Länge oder ein maskiertes Präfix/Suffix zu protokollieren. - Es wird empfohlen, nach Abschluss der finalen Verarbeitung auf Clientseite das Ergebnis über
report-signzu melden, um spätere Prüfungen und Fehleranalysen zu erleichtern. - Behandeln Sie Netzwerkfehler, HTTP-Fehler und Geschäftsfehler getrennt und legen Sie für Signaturanfragen angemessene Timeout- und Wiederholungsstrategien fest.