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_CA
do 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.pem
Varianta PKCS#11:
pkcs11-tool --module ... --login --keypairgen --id 10001 --key-type EC:brainpoolP384r1
Brainpool P-256 (
brainpoolP256r1
)openssl ecparam -name brainpoolP256r1 -genkey -noout -out root-ca-private-key.pem
NIST P-256 (
prime256v1
,secp256r1
)openssl ecparam -name prime256v1 -genkey -noout -out root-ca-private-key.pem
Pozná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.json
Poznamenejte si hodnotu atributu
pbid
z 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_DOMAIN
do 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>
Určete
pbid
nově vygenerovaného certifikátu kořenové CA z předchozího kroku. -
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_SUBCA
Pozná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.pem
Brainpool P-256 (
brainpoolP256r1
)openssl ecparam -name brainpoolP256r1 -genkey -noout -out ea-verification-private-key.pem
NIST 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.pem
NIST 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.json
Poznamenejte si hodnotu atributu
pbid
z 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.coer
Poznamenejte 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.json
Poznamenejte si
pbid
jakoea_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_pbid
jako odkaz na certifikát EA z předchozích kroků.encryption_key
averification_key
jsou 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.pem
Brainpool P-256 (
brainpoolP256r1
)openssl ecparam -name brainpoolP256r1 -genkey -noout -out aa-verification-private-key.pem
NIST 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.pem
NIST 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.json
Odpověď
{ "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.coer
Odpověď:
{ "result": "OK", "pbid": "etsi-plugtest-nist-rca:d09833dafcdb1b7d44614b28500a2ee2eb50c94a918155023b68b65bd1862bb8" }
Poznamenejte si
pbid
jakocacr_pbid
. -
Schvalte žádost o certifikát AA CA v kořenové CA
Použijte šablonu rootca-aa-cacr-approve.json a upravte.
curl -X