INTEGRITY Dokumentace

Žádosti o podpis certifikátu (CSR)

Vygenerujte žádost o podpis certifikátu (CSR), abyste získali vlastní certifikát od certifikační autority (CA) podle vlastního výběru, přičemž kontrolu nad soukromým klíčem si ponechá Cloudflare. Soukromý klíč přiřazený k CSR vygeneruje Cloudflare a nikdy neopustí naši síť.

Žádost CSR obsahuje informace o vaší doméně: název a adresu vaší organizace, obecný název (doménové jméno) a alternativní názvy subjektu (SAN).

Jakmile CSR vygenerujete, poskytněte ho svému zákazníkovi. Ten ho následně předá své preferované certifikační autoritě, která vystaví certifikát a vrátí mu ho. Jakmile certifikát obdržíte, nahrajte ho do Cloudflare a uveďte jedinečné ID CSR, které jste dostali při jeho vytvoření.


Vygenerujte privátní klíč a CSR

1. Sestavte payload CSR

Všechna pole kromě organizational_unit a key_type jsou povinná. Pokud neuvedete key_type, výchozí hodnota rsa2048 (bude použit RSA 2048 bit); druhou možností je p256v1 (NIST P-256).

Obecné názvy jsou omezeny na 64 znaků a alternativní názvy subjektu (SAN) jsou omezeny na 255 znaků, podle RFC 5280 ↗. Musíte zadat alespoň jeden SAN a seznam SAN by měl obsahovat i obecný název.

request_body=$(< <(cat <<EOF
{
  "country": "US",
  "state": "MA",
  "locality": "Boston",
  "organization": "City of Boston",
  "organizational_unit": "Championship Parade Detail",
  "common_name": "app.example.com",
  "sans": [
    "app.example.com",
    "www.example.com",
    "blog.example.com",
    "example.com"
  ],
  "key_type": "p256v1"
}
EOF
))

2. Vygenerujte CSR

Nyní vygenerujete CSR, který můžete poskytnout svému zákazníkovi.

curl https://api.cloudflare.com/client/v4/zones/{zone_id}/custom_csrs \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "Content-Type: application/json" \
--data "$request_body"

# Response:
{
  "result": {
    "id": "7b163417-1d2b-4c84-a38a-2fb7a0cd7752",
    "country": "US",
    "state": "MA",
    "locality": "Boston",
    "organization": "City of Boston",
    "organizational_unit": "Championship Parade Detail",
    "common_name": "app.example.com",
    "sans": [
      "app.example.com",
      "www.example.com",
      "blog.example.com",
      "example.com",
    ],
    "key_type": "p256v1",
    "csr": "-----BEGIN CERTIFICATE REQUEST-----\nMIIBSzCB8gIBADBiMQswaQYDVQQGEwJVUzELMAkGA1UECBMCTUExDzANBgNVBAcT\nBkJvc3RvbjEaMBgGA1UEChMRQ2l0eSBvZiBDaGFtcGlvbnMxGTAXBgNVBAMTEGNz\nci1wcm9kLnRscy5mdW4wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAaTKf70NYlwr\n20P6P8xj8/4mTN5q28dbZR/gM3u4m/RPs24+PxAfMZCNvkVKAPVWYfUAadZI4Ha/\ndxLh5Q6X5bhIoC4wLAYJKoZIhvcNAQkOMR8wHTAbBqNVHREEFDASghBjc3ItcHJv\nZC50bHMuZnVuMAoGCCqGSM49BAMCA0gAMEUCIQDgtFUZav466SbT2FGBsIBlahDI\nVkg4y+u+V/K5DlY1+gIgQ9xLfUSKnSnJYbM9TwWr4Z964+lBtB9af4O5pp7/PSA=\n-----END CERTIFICATE REQUEST-----\n"
  },
  "success": true

Nahraďte \n znaky skutečnými znaky nového řádku, než je předáte svému zákazníkovi. Toho lze dosáhnout přesměrováním výstupu předchozího volání do nástroje, jako je jq nebo perl, například:

curl https://api.cloudflare.com/client/v4/zones/{zone_id}/custom_csrs \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "Content-Type: application/json" \
--data "$request_body" | jq .result.csr | perl -npe s'/\\n/\n/g; s/"//g' > csr.txt

3. Zákazník získá certifikát

Váš zákazník použije poskytnutý CSR a ve spolupráci se svou certifikační autoritou získá podepsaný, veřejně důvěryhodný certifikát.

4. Nahrajte certifikát

Nahrajte certifikát a odkažte na ID, které bylo poskytnuto při generování CSR.

Nové řádky v certifikátu byste měli nahradit doslovným \n znaky, jak je znázorněno výše v příkladu nahrání vlastního certifikátu. Poté sestavte tělo požadavku a uveďte ID, které bylo vráceno v předchozím kroku.

Cloudflare přijímá pouze veřejně důvěryhodné certifikáty. Pokud se pokusíte nahrát self-signed certifikát, bude odmítnut.

$ MYCERT="$(cat app_example_com.pem|perl -pe 's/\r?\n/\\n/'|sed -e 's/..$//')"

$ request_body=$(< <(cat <<EOF
{
  "hostname": "app.example.com",
  "ssl": {
    "custom_csr_id": "7b163417-1d2b-4c84-a38a-2fb7a0cd7752",
    "custom_certificate": "$MYCERT"
  }
}
EOF
))

Po sestavení těla požadavku, vytvořte vlastní hostname s dodaným vlastním certifikátem. Pokud chcete certifikát použít pro více názvů hostitele, provedete více volání API a nahradíte hostname .


Další akce

Vypsat všechny CSR

Kolekci všech dříve vygenerovaných vlastních CSR (stránkovanou) si můžete vyžádat pomocí GET požadavek na https://api.cloudflare.com/client/v4/zones/{zone_id}/custom_csrs.

Odstranění CSR

Odstraňte jeden nebo více CSR, čímž odstraníte i podkladový privátní klíč, a to provedením DELETE požadavek na https://api.cloudflare.com/client/v4/zones/{zone_id}/custom_csrs/{csr_id}.

CSR můžete odstranit za předpokladu, že žádný vlastní certifikát nepoužívá soukromý klíč vygenerovaný pro tento CSR. Pokud se pokusíte odstranit CSR, jehož soukromý klíč se stále používá, obdržíte chybu.