Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
cs:tcs-api-documentation.html [2018/07/24 11:34] – [Strojový přístup ke službě TCS] dans@cesnet.czcs:tcs-api-documentation.html [2025/05/22 09:33] (aktuální) – odstraněno Ing. Daniel Studený
Řádek 1: Řádek 1:
-====== Strojový přístup ke službě TCS ====== 
- 
-Od **1. 7. 2018** je možné požádat o **serverový certifikát TCS** prostřednictvím API rozhraní. O jiné, než serverové certifikáty přes toto rozhraní žádat **nelze**. 
- 
-===== Dokumentace API ===== 
- 
-Volání API je realizováno **HTTP požadavkem** s autorizací **klientským certifikátem**. Akceptovány jsou pouze certifikáty vydané v rámci služby **TCS** a to certifikáty **osobní** a **robotové**. 
-Z výše uvedeného vyplývá, že uživatelé z organizací, které **nejsou zapojeny ve federaci identit eduId.cz**, a nemohou tudíž vydávat osobní certifikáty, bohužel **nemohou TCS API využívat**. 
- 
-==== Obecný popis volání funkcí API ==== 
- 
-Základní adresa pro volání aktuální verze API je 
- 
-''%%https://tcs-dev.cesnet.cz/api/v2/certificate/<jméno_funkce>%%'' 
- 
-Podle typu funkce je nutné odeslat požadavek jako **GET**, **POST**, **PUT**, nebo **DELETE**. Momentálně nejsou všechny z těchto typů požadavků rozhraním využity, funkce ale budou v budoucnu rozšiřovány a mohou být využity i dosud nevyužité typy volání rozhraní. 
- 
-Jak vstupní, tak i vrácená data jsou ve formátu JSON. Pro volání, při kterém jsou předávána data, je tedy potřeba nastavit typ obsahu na **application/json**. 
- 
-Příklad takového volání prostřednictvím aplikace **curl**: 
- 
-<code> 
-curl \ 
-  --cacert /etc/ssl/certs/TERENA_SSL_CA_3.pem \ 
-  --cacert /etc/ssl/certs/DigiCert_High_Assurance_EV_Root_CA.pem \ 
-  --cert muj_certifikat.crt \ 
-  --key muj_klic.key \ 
-  -d '{"prom1":"hod1", "prom2":"hod2"}' \ 
-  -H "Content-Type: application/json" \ 
-  -X POST \ 
-  https://tcs-dev.cesnet.cz/api/v2/certificate/funkce 
-</code> 
- 
-Příklad vrácených dat: 
- 
-<code> 
-{"status":"ok","id":1527791390} 
-</code> 
- 
-Jak je z příkladu patrné, server [[https://tcs.cesnet.cz | tcs.cesnet.cz]] se prokazuje **EV TCS** certifikátem. Zatímco kořenový certifikát **DigiCert_High_Assurance_EV_Root_CA.pem** 
-bývá standardní součástí většiny distribucí a v Linuxu se nachází právě ve výše uvedené cestě, mezilehlý certifikát **TERENA_SSL_High_Assurance_CA_3.pem** je zapotřebí stáhnout 
-např. z [[https://pki.cesnet.cz/certs/TERENA_SSL_High_Assurance_CA_3.pem | tohoto odkazu]]. 
- 
-==== Funkce ==== 
- 
-Níže naleznete popis volání implementovaných funkcí rozhraní. Funkce mohou být v budoucnu doplňovány, u existujících funkcí bude zachována kompatibilita tak, aby nebyla narušena funkcionalita 
-dříve implementovaných klientských systémů. 
- 
-=== Podání žádosti o serverový certifikát === 
- 
-== URL == 
-''%%https://tcs-dev.cesnet.cz/api/v2/certificate/request%%'' 
- 
-== Metoda volání == 
-''POST'' 
- 
-== Argumenty žádosti == 
- 
-^Klíč  ^Uvedení ^Popis  ^Povolené hodnoty / Příklad  ^Implicitní hodnota ^ 
-| **certificateRequest** | povinné | žádost o certifikát \\ v BASE64 kódovaném formátu \\ PKCS10 (formát PEM) | -----BEGIN CERTIFICATE REQUEST----- \\ ... \\ -----END CERTIFICATE REQUEST----- | - | 
-| **certificateType** | volitelné | profil (typ) certifikátu | **ov** nebo **es** nebo **ev** \\ (běžné ověření; \\ gridový certifikát; \\ rozšířené ověření) | **ov** | 
-| **certificateValidity** | volitelné | doba platnosti certifikátu [roky] | **1** nebo **2** | **1** | 
-| **subjectLanguage** |  volitelné | jazyková verze jména organizace \\ v předmětu certifikátu | **cs** nebo **en** nebo **ac** \\ (česká; anglická; ASCII) | **cs** | 
-| **notificationMail** | volitelné | e-mailová adresa pro upozornění \\ a informace o certifikátu | horymir.neumetelsky@cesnet.cz | - | 
-| **requesterPhone** | povinné | telefon pro ověření žadatele \\ v mezinárodním formátu E.123 | +420123456789 | - | 
- 
-<wrap em>Poznámky:</wrap> 
-    * **DNS jména** jsou brána z **CSR žádosti**; první uvedené jméno bude zároveň v poli **CN=** předmětu certifikátu 
-    * **žolíkový certifikát** musí mít v žádosti uvedeno pouze jedno DNS jméno - začínající hvězdičkou; Digicert automaticky doplní i jméno bez hvězdičky, tj. pro //*.ezproxy.cesnet.cz// bude doplněno //ezproxy.cesnet.cz// 
-    * pro **eScience** (gridový) certifikát je ignorován parametr **certificateValidity** - platnost je vždy nastavena na **13 měsíců** 
-    * pro **eScience** (gridový) certifikát je ignorován parametr **subjectLanguage** - jazyk předmětu může být pouze **anglický** 
-    * pro **EV** certifikát je ignorován parametr **subjectLanguage** - jazyk předmětu může být pouze **český** 
-    * jako **notificationMail** může být uvedena i **hromadná adresa**, nebo **více adres** správců serveru 
-    * jako **requesterPhone** musí být uveden **funkční telefon** žadatele - telefon slouží pouze pro interní ověření žadatele správcem organizace a není zasílán certifikační autoritě 
-    * další informace, jako je j**méno a příjmení** žadatele, **organizace** a jeho **e-mailová adresa** jsou brány z informací uložených při vydání **certifikátu, kterým se žadatel autorizoval** k TCS API 
-    * vydat certifikát pro **jinou organizaci**, než je domovská organizace žadatele, **nelze**; pro vydání certifikátu pro jinou než domovskou organizaci je nutné použít **formulářové WWW rozhraní** 
- 
-== Výsledek volání == 
- 
-^Klíč ^Výskyt ^Popis  ^Možné hodnoty / Příklad ^ 
-| **status** | vždy | Výsledek volání funkce | **ok** nebo **error** | 
-| **id** | v případě úspěšného odeslání | přidělené číslo žádosti | 1527791390 | 
-| **message** | v případě chyby | popis chybového stavu | CSR could not be parsed. | 
- 
-== Příklad volání == 
- 
-Požadavek: 
-<code> 
-POST /api/v2/certificate/request HTTP/1.1 
-Host: tcs.cesnet.cz 
-Content-Type: application/json 
- 
-{ 
-    "certificateRequest": "----BEGIN CERTIFICATE REQUEST-----...-----END CERTIFICATE REQUEST-----", 
-    "certificateType": "ev", 
-    "certificateValidity": 2, 
-    "notificationMail": [ 
-        admin1@myuniversity.cz, 
-        admin2@myuniversity.cz, 
-        server_admins@myuniversity.cz 
-    ], 
-    "requesterPhone": "+420123456789" 
-} 
-</code> 
- 
-Odpověď: 
-<code> 
-Status Code: 201 
-Content-Type: application/json 
- 
-{ 
-    "status": "ok", 
-    "id": 1527791390 
-} 
-</code> 
- 
-=== Zjištění stavu žádosti o serverový certifikát === 
- 
-== URL == 
-''%%https://tcs-dev.cesnet.cz/api/v2/certificate/status/<id>%%'' 
- 
-== Metoda volání == 
-''GET'' 
- 
-== Argumenty žádosti == 
- 
-^Klíč  ^Uvedení ^Popis  ^Povolené hodnoty / Příklad  ^Implicitní hodnota ^ 
-| **id** | povinné | číslo ověřované žádosti | 1527791390 | - | 
- 
-=== Výsledek volání === 
- 
-^Klíč ^Výskyt ^Popis  ^Možné hodnoty / Příklad ^ 
-| **status** | vždy | Výsledek volání funkce | **issued** nebo **added** nebo **accepted** \\ nebo **refused** nebo **revoked** nebo **error** \\ (vydaný; čekající na schválení; \\ schválený - čekající na vydání; \\ zamítnutý; odvolaný; chyba | 
-| **certificate** | v případě vydaného certifikátu | vydaný certifikát ve formátu PEM | -----BEGIN CERTIFICATE----- \\ ... \\ -----END CERTIFICATE----- | 
-| **message** | v případě chyby | popis chybového stavu | Invalid certificate id supplied. | 
- 
-== Příklad volání == 
- 
-Požadavek: 
-<code> 
-GET /api/v2/certificate/status/1527791390 HTTP/1.1 
-Host: tcs.cesnet.cz 
-</code> 
- 
-Odpověď: 
-<code> 
-Status Code: 400 
-Content-Type: application/json 
- 
-{ 
-    "status": "refused", 
-    "message": "Certificate request refused by administrator." 
-} 
-</code> 
-