Chrome Management Certificate Provisioning API के लिए कोड सैंपल

एपीआई की सुविधाओं के बारे में खास जानकारी पाने के लिए, Cert Provisioning API पर जाएं.

इस पेज पर मौजूद सभी अनुरोध, इन वैरिएबल का इस्तेमाल करते हैं:

  • $TOKEN - OAuth2 टोकन या खुद से हस्ताक्षर किया गया JWT
  • $CUSTOMER - ग्राहक का आईडी या लिटरल my_customer
  • $CERT_PROVISIONING_PROCESS - सर्टिफ़िकेट उपलब्ध कराने की प्रोसेस का आईडी, जिसे शुरुआती Pub/Sub मैसेज में सर्टिफ़िकेट उपलब्ध कराने वाले अडैप्टर को भेजा गया था
  • $OPERATION - ज़्यादा समय तक चलने वाले ऑपरेशन का आईडी

सर्टिफ़िकेट उपलब्ध कराने की प्रोसेस पाना

CertificateProvisioningProcess संसाधन पाएं. सर्टिफ़िकेट उपलब्ध कराने की प्रोसेस की स्थिति के आधार पर, रिस्पॉन्स में CertificateProvisioningProcess रिसॉर्स के सभी फ़ील्ड पॉप्युलेट नहीं होते.

अनुरोध

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

जवाब

क्लाइंट से डेटा पर हस्ताक्षर करने का अनुरोध करने से पहले, यह जवाब जनरेट किया जाता है.

{
  "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"
  }
}

सर्टिफ़िकेट उपलब्ध कराने की प्रोसेस पर दावा करना

सर्टिफ़िकेट उपलब्ध कराने वाला अडैप्टर, सर्टिफ़िकेट उपलब्ध कराने की प्रोसेस का दावा करता है. अगर एक साथ कई अडैप्टर इंस्टेंस चल रहे हैं, तो इससे यह पक्का होता है कि सर्टिफ़िकेट की प्रोवाइज़निंग की प्रोसेस को एक ही अडैप्टर इंस्टेंस मैनेज करता है. अगर सिर्फ़ एक अडैप्टर इंस्टेंस है, तब भी यह चरण ज़रूरी है.

अनुरोध

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

जवाब

अगर सर्टिफ़िकेट उपलब्ध कराने की प्रोसेस पर पहले कभी दावा नहीं किया गया है, तो कोई रिस्पॉन्स नहीं मिलता.

{}

अगर सर्टिफ़िकेट की प्रोवाइज़न करने की प्रोसेस पर पहले ही किसी दूसरे एडेप्टर इंस्टेंस ने दावा कर लिया है, तो claim अनुरोध 400 गलत अनुरोध वाली गड़बड़ी के साथ पूरा नहीं होगा.

मालिकाना हक के सबूत के तौर पर हस्ताक्षर का अनुरोध करना

सर्टिफ़िकेट का अनुरोध करने वाले क्लाइंट से, सर्टिफ़िकेट की प्रोवाइड करने की प्रोसेस में मौजूद पब्लिक की से जुड़ी निजी कुंजी के साथ, बताए गए SignatureAlgorithm का इस्तेमाल करके, कुछ डेटा पर हस्ताक्षर करने का अनुरोध करें. $DATA_TO_SIGN, Base64 कोड में बदले गए उस डेटा को दिखाता है जिस पर क्लाइंट को हस्ताक्षर करना है.

अनुरोध

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

जवाब

जवाब में एक ऑपरेशन होता है. इसमें मेटाडेटा फ़ील्ड को SignDataMetadata प्रोटो मैसेज से पॉप्युलेट किया जाता है.

{
  "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"
  }
}

ज़्यादा समय तक चलने वाली कार्रवाई की जानकारी पाना

SignData के अनुरोध से, लंबे समय तक चलने वाले ऑपरेशन की नई स्थिति पाएं.

अनुरोध

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

जवाब

ऑपरेशन के metadata फ़ील्ड में, SignDataMetadata प्रोटो मैसेज भरा जाता है. अगर मौजूद है, तो किसी ऑपरेशन के response में SignDataResponse प्रोटो मैसेज भरा जाता है.

अगर लंबे समय से चल रहा ऑपरेशन अब भी जारी है, तो:

{
  "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"
  }
}

अगर लंबे समय तक चलने वाला ऑपरेशन पूरा हो गया है, तो:

{
  "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"
      }
    }
  }
}

अगर लंबे समय तक चलने वाली कार्रवाई पूरी नहीं हुई है, तो:

{
  "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]"
  }
}

सर्टिफ़िकेट अपलोड करना

X.509 सर्टिफ़िकेट को PEM फ़ॉर्मैट में अपलोड करें. सैंपल अनुरोध में, PEM-कोड में बदले गए सर्टिफ़िकेट को $CERTIFICATE_IN_PEM_FORMAT वैरिएबल से दिखाया गया है.

अनुरोध

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

जवाब

{}

सर्टिफ़िकेट उपलब्ध कराने की प्रोसेस में आ रही समस्या की शिकायत करना

सर्टिफ़िकेट उपलब्ध कराने की प्रोसेस को 'पूरी नहीं हुई' के तौर पर मार्क करें और गड़बड़ी का सही मैसेज सेट करें. गड़बड़ी का मैसेज, उस ChromeOS क्लाइंट को भेजा जाता है जिसने सर्टिफ़िकेट उपलब्ध कराने की प्रोसेस शुरू की थी.

अनुरोध

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

जवाब

{}