Nastavení C-ITS bezpečnostní PKI¶
Note
Technické standardy: ETSI TS 102 941 v1.3.1, v1.2.1 & ETSI TS 103 097 v1.3.1
Tip
Šablony pro certifikáty, žádosti o certifikáty, CTL a CRL jsou ve složce templates.
Vygenerování certifikátu kořenové CA¶
Předpoklad: SeaCat PKI je nainstalováno, nakonfigurováno a zastaveno.
- 
Zadejte nového nájemce
Přidejte
TENANT_ROOT_CAdo nájemců, vyberte popisný název pouze malými písmeny ASCII vetc/seacatpki.conf:[tenants] ids=TENANT_ROOT_CA - 
Určete základní URL API SeaCat PKI
export ROOT_CA_URL=http://localhost:8080/TENANT_ROOT_CA - 
Vygenerujte pár soukromého/verejného klíče kořenové CA
Vyberte jednu z následujících EC křivek:
Brainpool P-386 (
brainpoolP384r1)openssl ecparam -name brainpoolP384r1 -genkey -noout -out root-ca-private-key.pemVarianta PKCS#11:
pkcs11-tool --module ... --login --keypairgen --id 10001 --key-type EC:brainpoolP384r1Brainpool P-256 (
brainpoolP256r1)openssl ecparam -name brainpoolP256r1 -genkey -noout -out root-ca-private-key.pemNIST P-256 (
prime256v1,secp256r1)openssl ecparam -name prime256v1 -genkey -noout -out root-ca-private-key.pemPoznámka: Můžete sdílet stejný soukromý klíč mezi různými verzemi C-ITS nebo dokonce X.509.
 - 
Přidejte nový soukromý klíč do konfiguračního souboru
v
etc/seacatpki.conf:[seacatpki:private_key:TENANT_ROOT_CA_KEY_NAME] keyfile=${THIS_DIR}/root-ca-private-key.pem tenants=TENANT_ROOT_CA - 
Spusťte SeaCat PKI
 - 
Vytvořte samopodepsaný certifikát kořenové CA
Použijte šablonu rootca.json a upravte, pokud je to potřeba.
curl -X PUT "${ROOT_CA_URL}/cits/rca/self-signed?ca_private_key=TENANT_ROOT_CA_KEY_NAME" \ --header 'Content-Type: application/json' \ -d @templates/rootca.jsonPoznamenejte si hodnotu atributu
pbidz odpovědi, je to veřejný objektový ID nového certifikátu. - 
Zadejte nového nájemce pro důvěryhodnou doménu
Poznámka: Krok důvěryhodné domény může být přeskočen, pokud důvěryhodná doména již existuje.
Přidejte
TENANT_TRUST_DOMAINdo nájemců, vyberte popisný název pouze malými písmeny ASCII vetc/seacatpki.conf:[tenants] ids=TENANT_ROOT_CA TENANT_TRUST_DOMAIN - 
Nastavte důvěryhodnou doménu
v
etc/seacatpki.conf:Důvěryhodná doména EU ECTL TLM L0:
[seacatpki:cits:trust:TENANT_TRUST_DOMAIN] tlm_certificate=https://cpoc.jrc.ec.europa.eu/L0/gettlmcertificate/Příklad prázdné důvěryhodné domény:
[seacatpki:cits:trust:TENANT_TRUST_DOMAIN] ; Toto je prázdná důvěryhodná doména - 
Nakonfigurujte novou kořenovou CA v konfiguračním souboru SeaCat PKI
v
etc/seacatpki.conf:[seacatpki:cits:ca:TENANT_ROOT_CA] certificate=<pbid> trust_domain=<TENANT_TRUST_DOMAIN> # Optional crl_sign=digest/certificate crl_validity_days=<pocet-dni>- Určete 
pbidnově vygenerovaného certifikátu kořenové CA z předchozího kroku. - Pokud je to žádoucí, specifikujte 
crl_sign. Výchozí hodnota (i pokud není specifikována) je pouze otisk (digest) v CRL. - Při potřebě lze konfigurovat výchozí 
crl_validity_days, který určuje počet dní, po které by měl být seznam CRL platný. Je-li dodán, parametr „nextUpdate“ v těle požadavku toto chování přepisuje. 
 - Určete 
 - 
Restartujte SeaCat PKI
 - 
Vytvořte seznam důvěryhodných certifikátů kořenové CA (CTL)
Použijte počáteční šablonu CTL rootca-ctl-init.json a zkopírujte ji do
templates/rootca-ctl.json.DŮLEŽITÉ: Upravte URL kořenové CA DC v souboru.
curl -X PUT --url "${ROOT_CA_URL}/cits/rca/ctl" \ --header 'Content-Type: application/json' \ -d @templates/rootca-ctl-init.json.json - 
Vytvořte seznam odvolání certifikátů kořenové CA (CRL)
Použijte prázdnou počáteční šablonu CRL rootca-crl-init.json a zkopírujte ji do
templates/rootca-crl.json.curl -X PUT --url "${ROOT_CA_URL}/cits/rca/crl" \ --header 'Content-Type: application/json' \ -d @templates/rootca-crl-init.json - 
Kořenová CA je nyní nakonfigurována a dostupná k použití.
 
Vygenerování certifikátu autority pro registraci (EA)¶
- 
Zadejte nového nájemce
v
etc/seacatpki.conf:[tenants] ids=TENANT_SUBCAPoznámka: Můžete znovu použít existujícího nájemce, např. s kořenovou CA. Není možné provozovat více EA v jednom nájemci.
 - 
Určete základní URL API SeaCat PKI
export ROOT_CA_URL=http://localhost:8080/TENANT_ROOT_CA export EA_URL=http://localhost:8080/TENANT_SUBCA - 
Vygenerujte ověřovací soukromý klíč autority pro registraci
Vyberte jednu z následujících EC:
Brainpool P-386 (
brainpoolP384r1)openssl ecparam -name brainpoolP384r1 -genkey -noout -out ea-verification-private-key.pemBrainpool P-256 (
brainpoolP256r1)openssl ecparam -name brainpoolP256r1 -genkey -noout -out ea-verification-private-key.pemNIST P-256 (
prime256v1,secp256r1)openssl ecparam -name prime256v1 -genkey -noout -out ea-verification-private-key.pem - 
Vygenerujte šifrovací soukromý klíč autority pro registraci
Vyberte jednu z následujících EC:
Brainpool P-256 (
brainpoolP256r1)openssl ecparam -name brainpoolP256r1 -genkey -noout -out ea-encryption-private-key.pemNIST P-256 (
prime256v1,secp256r1)openssl ecparam -name prime256v1 -genkey -noout -out ea-encryption-private-key.pem - 
Nakonfigurujte klíče v SeaCat PKI
v
etc/seacatpki.conf:[seacatpki:private_key:TENANT_SUBCA-verification-key] keyfile=${THIS_DIR}/ea-verification-private-key.pem tenants=TENANT_SUBCA [seacatpki:private_key:TENANT_SUBCA-encryption-key] keyfile=${THIS_DIR}/ea-encryption-private-key.pem tenants=TENANT_SUBCA - 
Restartujte SeaCat PKI
 - 
Vygenerujte žádost o certifikát EA CA.
Použijte šablonu ea-cacr.json a upravte. Vyplňte hodnoty
verification_key(TENANT_SUBCA-verification-key) aencryption_key(TENANT_SUBCA-encryption-key).curl -X PUT ${EA_URL}/cits/ea/ca-certificate-request \ --header 'Content-Type: application/json' \ -d @templates/ea-cacr.jsonPoznamenejte si hodnotu atributu
pbidz odpovědi, je to veřejný objektový ID žádosti o certifikát CA. - 
Stáhněte žádost o certifikát CA z EA
curl -o ea-cacr.coer ${EA_URL}/sa/<pbid>Poznámka: Pokud EA a kořenová CA sdílejí stejný nájemce, kroky stahování a nahrávání mohou být přeskočeny.
 - 
Nahrajte žádost o certifikát CA do kořenové CA
curl -X PUT "${ROOT_CA_URL}/sa?family=cits&type=cacr" --upload-file ea-cacr.coerPoznamenejte si
pbid. - 
Schvalte žádost o certifikát EA CA v kořenové CA
Použijte šablonu rootca-ea-cacr-approve.json a upravte.
cacr,ca_certificate.curl -X PUT --url "${ROOT_CA_URL}/cits/rca/approve-ca-certificate-request" \ --header 'Content-Type: application/json' \ -d @templates/rootca-ea-cacr-approve.jsonPoznamenejte si
pbidjakoea_cert_pbid, odkazuje na nově vytvořený certifikát EA. - 
Stáhněte certifikáty z kořenové CA
curl -o ea-cert.coer ${ROOT_CA_URL}/sa/<ea_cert_pbid> curl -o rootca-cert.coer ${ROOT_CA_URL}/cits/dc/getcert/<rca_certificate_digest>Certifikát autority pro registraci je uložen v souboru
ea-cert.coer.Poznámka: Pokud EA a kořenová CA sdílejí stejný nájemce, kroky stahování a nahrávání mohou být přeskočeny.
 - 
Nahrajte certifikáty do autority pro registraci
curl -X PUT "${EA_URL}/sa?family=cits&type=cert" --upload-file rootca-cert.coer curl -X PUT "${EA_URL}/sa?family=cits&type=cert" --upload-file ea-cert.coer - 
Nakonfigurujte autoritu pro registraci
v
etc/seacatpki.conf:[seacatpki:cits:ea:TENANT_SUBCA] certificate=<ea_certificate_pbid> encryption_key=TENANT_SUBCA-encryption-key verification_key=TENANT_SUBCA-verification-key trust_domain=<trust_domain_tenant>Použijte
ea_cert_pbidjako odkaz na certifikát EA z předchozích kroků.encryption_keyaverification_keyjsou odkazy na příslušné soukromé klíče nakonfigurované výše.Volitelně vyplňte také název nájemce, který obsahuje
trust_domain, jehož součástí by měla být tato EA. - 
Přidejte EA do CTL kořenové CA
Použijte šablonu rootca-ctl.json nebo předchozí šablonu CTL a upravte.
curl -X PUT --url "${ROOT_CA_URL}/cits/rca/create-certificate-trust-list" \ --header 'Content-Type: application/json' \ -d @templates/rootca-ctl.jsonÚryvek toho, co přidat do CTL:
... { "add": { "ea": { "eaCertificate": "79C2F0762BC405D9", "aaAccessPoint": "http://pki.seacat.io/etsi-plugtest-bp-ea/cits/ea/authorization-validation", "itsAccessPoint": "http://pki.seacat.io/etsi-plugtest-bp-ea/cits/ea/enrolment" } } } ... - 
Restartujte SeaCat PKI
 
Vygenerování certifikátu autority pro autorizaci (AA)¶
- 
Zadejte nového nájemce
v
etc/seacatpki.conf:[tenants] ids=TENANT_SUBCA - 
Určete základní URL API SeaCat PKI
export ROOT_CA_URL=http://localhost:8080/TENANT_ROOT_CA export AA_URL=http://localhost:8080/TENANT_SUBCA - 
Vygenerujte ověřovací soukromý klíč autority pro autorizaci
Vyberte jednu z následujících EC:
Brainpool P-386 (
brainpoolP384r1)openssl ecparam -name brainpoolP384r1 -genkey -noout -out aa-verification-private-key.pemBrainpool P-256 (
brainpoolP256r1)openssl ecparam -name brainpoolP256r1 -genkey -noout -out aa-verification-private-key.pemNIST P-256 (
prime256v1,secp256r1)openssl ecparam -name prime256v1 -genkey -noout -out aa-verification-private-key.pem - 
Vygenerujte šifrovací soukromý klíč autority pro autorizaci
Vyberte jednu z následujících EC:
Brainpool P-256 (
brainpoolP256r1)openssl ecparam -name brainpoolP256r1 -genkey -noout -out aa-encryption-private-key.pemNIST P-256 (
prime256v1,secp256r1)openssl ecparam -name prime256v1 -genkey -noout -out aa-encryption-private-key.pem - 
Nakonfigurujte klíče v SeaCat PKI
v
etc/seacatpki.conf:[seacatpki:private_key:TENANT_SUBCA-verification-key] keyfile=${THIS_DIR}/aa-verification-private-key.pem tenants=TENANT_SUBCA [seacatpki:private_key:TENANT_SUBCA-encryption-key] keyfile=${THIS_DIR}/aa-encryption-private-key.pem tenants=TENANT_SUBCA - 
Restartujte SeaCat PKI
 - 
Vygenerujte žádost o certifikát AA CA.
Použijte šablonu aa-cacr.json a upravte.
curl -X PUT ${AA_URL}/cits/aa/ca-certificate-request \ --header 'Content-Type: application/json' \ -d @templates/aa-cacr.jsonOdpověď
{ "result": "OK", "pbid": "etsi-plugtest-nist-aa2:d09833dafcdb1b7d44614b28500a2ee2eb50c94a918155023b68b65bd1862bb8", "fingerprint": "d09833dafcdb1b7d44614b28500a2ee2eb50c94a918155023b68b65bd1862bb8" } - 
Stáhněte žádost o certifikát CA z AA
curl -o aa-cacr.coer ${AA_URL}/sa/<pbid>Tím se uloží žádost o certifikát CA do souboru
aa-cacr.coer.Poznámka: Pokud AA a kořenová CA sdílejí stejný nájemce, kroky stahování a nahrávání mohou být přeskočeny.
 - 
Nahrajte žádost o certifikát CA do kořenové CA
curl -X PUT "${ROOT_CA_URL}/sa?family=cits&type=cacr" --upload-file aa-cacr.coerOdpověď:
{ "result": "OK", "pbid": "etsi-plugtest-nist-rca:d09833dafcdb1b7d44614b28500a2ee2eb50c94a918155023b68b65bd1862bb8" }Poznamenejte si
pbidjakocacr_pbid. - 
Schvalte žádost o certifikát AA CA v kořenové CA
Použijte šablonu rootca-aa-cacr-approve.json a upravte.
curl -X