Chrome Management Certificate Provisioning API için Kod Örnekleri

API özelliklerine genel bakış için Cert Provisioning API'yi ziyaret edin.

Bu sayfadaki tüm isteklerde aşağıdaki değişkenler kullanılır:

  • $TOKEN: OAuth2 jetonu veya kendi kendine imzalı JWT
  • $CUSTOMER: Müşterinin kimliği veya my_customer değişmezi
  • $CERT_PROVISIONING_PROCESS: İlk Pub/Sub mesajında Certificate Provisioning Adapter'a iletilen sertifika temel hazırlığı sürecinin kimliği
  • $OPERATION: Uzun süreli işlemin kimliği

Sertifika Temel Hazırlık Süreci Alma

Bir CertificateProvisioningProcess kaynağı alın. Sertifika sağlama sürecinin durumuna bağlı olarak, yanıtta CertificateProvisioningProcess kaynağının tüm alanları doldurulmaz.

İstek

curl -H "Authorization: Bearer $TOKEN" \
https://chromemanagement.googleapis.com/v1/customers/$CUSTOMER/certificateProvisioningProcesses/$CERT_PROVISIONING_PROCESS

Yanıt

Aşağıdaki yanıt, istemciden verileri imzalaması istenmeden önce oluşturulur.

{
  "name": "customers/$CUSTOMER/certificateProvisioningProcesses/$CERT_PROVISIONING_PROCESS",
  "provisioningProfileId": "43b413f9-5ecd-4bf6-b431-f2df56ce852e",
  "subjectPublicKeyInfo": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqtbosvGe1JzJJYBPsPzFY33xD9fSJhQLZh21ELD2vEZ5OSzxXzQOhlXZ2Mv4C3m4zn8mjuYykprBxaMggryd8kyhycm2DDsL2/KUkdQNPnv6mBQ8iionF84iabh+FWph1CU63j2vCPnw0VYSv7cz+bHsxs3tXFB7PqqQZr7WcWAAxFaIqoTkJrTGMzDFs8GHUA6mFhMj0WsPzp3aicj24uW0AAJjVFmiZ+pz1lOOL4coNsVrujrX2E6lU8AHjmoQT6ThRVnuo1jFXoASB4A1It6dtu/P8L3zhsVWYRtOZjLLVvGryzT8z0A8iW5k+apkb465jgLd2vuxFPekAgPRDwIDAQAB",
  "chromeOsDevice": {
    "deviceDirectoryApiId": "abcdefgh-ijkl-mnop-qrst-uvwxyz0123456",
    "serialNumber": "0123456789"
  },
  "startTime": "2025-03-07T13:38:54.930621Z",
  "genericCaConnection": {
    "caConnectionAdapterConfigReference": "default_ca_config"
  },
  "genericProfile": {
    "profileAdapterConfigReference": "device_profile"
  }
}

Sertifika Temel Hazırlık Süreci için Hak Talep Etme

Sertifika Temel Hazırlık Bağdaştırıcısı, sertifika temel hazırlığı süreci için hak talebinde bulunur. Paralel olarak birden fazla bağdaştırıcının çalışması, sertifika sağlama sürecinin aynı bağdaştırıcının tarafından ele alınmasını sağlar. Bu adım, yalnızca tek bir Adaptör örneği varsa da gereklidir.

İstek

curl -H "Authorization: Bearer $TOKEN" \
--json '{"callerInstanceId": "adapter_instance_1"}' \
https://chromemanagement.googleapis.com/v1/customers/$CUSTOMER/certificateProvisioningProcesses/$CERT_PROVISIONING_PROCESS:claim

Yanıt

Sertifika sağlama işlemi daha önce talep edilmemişse boş bir yanıt döndürülür.

{}

Sertifika sağlama işlemi için başka bir bağdaştırıcının örneği tarafından hak talebinde bulunulmuşsa claim isteği 400 Hatalı İstek hatasıyla başarısız olur.

Sahiplik Belgesi İmzası İsteme

Sertifika isteyen istemciden, sertifika sağlama sürecindeki ortak anahtara karşılık gelen özel anahtarla belirtilen SignatureAlgorithm'ı kullanarak bazı verileri imzalamasını isteyin. $DATA_TO_SIGN, istemci tarafından imzalanmak üzere Base64 kodlamalı verileri temsil eder.

İstek

curl -H "Authorization: Bearer $TOKEN" \
--json '{"signData": "$DATA_TO_SIGN","signatureAlgorithm":"SIGNATURE_ALGORITHM_RSA_PKCS1_V1_5_SHA256"}'\
https://chromemanagement.googleapis.com/v1/customers/$CUSTOMER/certificateProvisioningProcesses/$CERT_PROVISIONING_PROCESS:signData

Yanıt

Yanıtta, meta veri alanının SignDataMetadata proto mesajıyla doldurulduğu bir Operation bulunur.

{
  "name": "customers/$CUSTOMER/certificateProvisioningProcesses/$CERT_PROVISIONING_PROCESS/operations/$OPERATION",
  "metadata": {
    "@type": "type.googleapis.com/google.chrome.management.versions.v1.SignDataMetadata",
    "startTime": "2025-03-07T14:44:06.156385Z"
  }
}

Uzun süreli işlemi alma

SignData isteğinde döndürülen uzun süreli bir işlemin son durumunu alın.

İstek

curl -H "Authorization: Bearer $TOKEN" \
https://chromemanagement.googleapis.com/v1/customers/$CUSTOMER/certificateProvisioningProcesses/$CERT_PROVISIONING_PROCESS/operations/$OPERATION

Yanıt

İşlem öğesinin metadata alanı, SignDataMetadata proto mesajıyla doldurulur. Varsa bir Operation öğesinin response alanı, SignDataResponse proto mesajıyla doldurulur.

Uzun süreli işlem hâlâ devam ediyorsa:

{
  "name": "customers/$CUSTOMER/certificateProvisioningProcesses/$CERT_PROVISIONING_PROCESS/operations/$OPERATION",
  "metadata": {
    "@type": "type.googleapis.com/google.chrome.management.versions.v1.SignDataMetadata",
    "startTime": "2025-03-07T14:44:06.156385Z"
  }
}

Uzun süren işlem başarıyla tamamlandıysa:

{
  "name": "customers/$CUSTOMER/certificateProvisioningProcesses/$CERT_PROVISIONING_PROCESS/operations/$OPERATION",
  "metadata": {
    "@type": "type.googleapis.com/google.chrome.management.versions.v1.SignDataMetadata",
    "startTime": "2025-03-07T14:44:06.156385Z"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.chrome.management.versions.v1.SignDataResponse",
    "certificateProvisioningProcess": {
      "name": "customers/$CUSTOMER/certificateProvisioningProcesses/$CERT_PROVISIONING_PROCESS",
      "provisioningProfileId": "43b413f9-5ecd-4bf6-b431-f2df56ce852e",
      "subjectPublicKeyInfo": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqtbosvGe1JzJJYBPsPzFY33xD9fSJhQLZh21ELD2vEZ5OSzxXzQOhlXZ2Mv4C3m4zn8mjuYykprBxaMggryd8kyhycm2DDsL2/KUkdQNPnv6mBQ8iionF84iabh+FWph1CU63j2vCPnw0VYSv7cz+bHsxs3tXFB7PqqQZr7WcWAAxFaIqoTkJrTGMzDFs8GHUA6mFhMj0WsPzp3aicj24uW0AAJjVFmiZ+pz1lOOL4coNsVrujrX2E6lU8AHjmoQT6ThRVnuo1jFXoASB4A1It6dtu/P8L3zhsVWYRtOZjLLVvGryzT8z0A8iW5k+apkb465jgLd2vuxFPekAgPRDwIDAQAB",
      "chromeOsDevice": {
        "deviceDirectoryApiId": "abcdefgh-ijkl-mnop-qrst-uvwxyz0123456",
        "serialNumber": "0123456789"
      },
      "startTime": "2025-03-07T13:38:54.930621Z",
      "signData": "ZGF0YSB0byBzaWduCg==",
      "signatureAlgorithm": "SIGNATURE_ALGORITHM_RSA_PKCS1_V1_5_SHA256",
      "signature": "mPfL8v/DR+ZqbtJ6X5cJCTrzfOO3wPHCY8nV/stbokdNZnkRJ8U0PBzgm6pWy08pMmOfrs9ZMBXcQ0i05Oe6AwgHYYN5RHuwdnhAklJYriDT4fXdzewD6KuA6x7ZX1d2xYnh0p2XczcdNOJsrz2T/p+89PLcB6I1PIg1Cwz4I1YCAS2OMAQF5DxS+SvMpPbkdzkNG4SCCL/hJNayxRMr98SbQ0aQE77AtxzpXGof5cBEBOcbQ+T+kBIgArQ87D6bQVHVB3di+TvYepK6hwxiLbhCEDGHgi2DfMp8kEWnAVPVzi6xht5jPNhVqILALRbQQ1nUjlP8UO+/y+WR4M36Yg==",
      "genericCaConnection": {
        "caConnectionAdapterConfigReference": "default_ca_config"
      },
      "genericProfile": {
        "profileAdapterConfigReference": "device_profile"
      }
    }
  }
}

Uzun süren işlem başarısız olursa:

{
  "name": "customers/$CUSTOMER/certificateProvisioningProcesses/$CERT_PROVISIONING_PROCESS/operations/$OPERATION",
  "metadata": {
    "@type": "type.googleapis.com/google.chrome.management.versions.v1.SignDataMetadata",
    "startTime": "2025-03-07T14:44:06.156385Z"
  },
  "done": true,
  "error": {
    "code": 3,
    "message": "The requested SignData LRO failed because the corresponding certificate provisioning process is in failure state CERTIFICATE_PROVISIONING_RESULT_ERROR_INVALID_SIGNATURE with the following error message: The proof of possession signature is invalid. [operationId=$OPERATION, cppId=$CERT_PROVISIONING_PROCESS, customerId=$CUSTOMER]"
  }
}

Sertifika yükleme

X.509 sertifikasını PEM biçiminde yükleyin. Örnek isteğinde, PEM kodlamalı sertifika $CERTIFICATE_IN_PEM_FORMAT değişkeniyle gösterilir.

İstek

curl -H "Authorization: Bearer $TOKEN" \
--json '{"certificatePem": "$CERTIFICATE_IN_PEM_FORMAT"}' \
https://chromemanagement.googleapis.com/v1/customers/$CUSTOMER/certificateProvisioningProcesses/$CERT_PROVISIONING_PROCESS:uploadCertificate

Yanıt

{}

Sertifika temel hazırlığı süreciyle ilgili bir hatayı bildirme

Sertifika temel hazırlığı sürecini başarısız olarak işaretleyin ve uygun bir hata mesajı ayarlayın. Hata mesajı, sertifika temel hazırlığı sürecini başlatan ChromeOS istemcisine iletilir.

İstek

curl -H "Authorization: Bearer $TOKEN" \
--json '{"errorMessage": "The CA could not issue the certificate."}' \
https://chromemanagement.googleapis.com/v1/customers/$CUSTOMER/certificateProvisioningProcesses/$CERT_PROVISIONING_PROCESS:setFailure

Yanıt

{}