Mẫu mã cho API Cung cấp chứng chỉ quản lý Chrome

Truy cập vào Cert Provisioning API để biết thông tin tổng quan về các tính năng của API.

Tất cả các yêu cầu trên trang này đều sử dụng các biến sau:

  • $TOKEN – Mã thông báo OAuth2 hoặc JWT tự ký
  • $CUSTOMER – Mã khách hàng hoặc giá trị cố định my_customer
  • $CERT_PROVISIONING_PROCESS – Mã nhận dạng của quy trình cấp phép chứng chỉ đã được truyền đến Trình chuyển đổi cấp phép chứng chỉ trong thông báo Pub/Sub ban đầu
  • $OPERATION – Mã của thao tác thực hiện lâu

Nhận quy trình cấp phép chứng chỉ

Nhận tài nguyên CertificateProvisioningProcess. Tuỳ thuộc vào trạng thái của quy trình cấp chứng chỉ, không phải tất cả các trường của tài nguyên CertificateProvisioningProcess đều được điền sẵn trong phản hồi.

Yêu cầu

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

Phản hồi

Phản hồi sau đây được tạo trước khi yêu cầu ứng dụng ký dữ liệu.

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

Xác nhận quyền sở hữu quy trình cấp phép chứng chỉ

Trình chuyển đổi cấp phép chứng chỉ xác nhận một quy trình cấp phép chứng chỉ. Nếu nhiều thực thể Bộ chuyển đổi đang chạy song song, thì điều này đảm bảo rằng quá trình cấp chứng chỉ được xử lý bởi cùng một thực thể Bộ chuyển đổi. Bước này cũng cần thiết nếu chỉ có một thực thể Bộ chuyển đổi.

Yêu cầu

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

Phản hồi

Nếu trước đây bạn chưa xác nhận quyền sở hữu quy trình cấp chứng chỉ, hệ thống sẽ trả về một phản hồi trống.

{}

Nếu một thực thể Bộ chuyển đổi khác đã xác nhận quyền sở hữu quy trình cấp chứng chỉ, thì yêu cầu claim sẽ không thành công kèm theo lỗi 400 Yêu cầu không hợp lệ.

Yêu cầu chữ ký chứng minh quyền sở hữu

Yêu cầu ứng dụng yêu cầu chứng chỉ để ký một số dữ liệu bằng cách sử dụng SignatureAlgorithm được chỉ định với khoá riêng tư tương ứng với khoá công khai trong quy trình cấp chứng chỉ. $DATA_TO_SIGN đại diện cho dữ liệu được mã hoá Base64 mà ứng dụng sẽ ký.

Yêu cầu

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

Phản hồi

Phản hồi chứa một Thao tác với trường siêu dữ liệu được điền sẵn bằng thông báo proto 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"
  }
}

Nhận thao tác chạy trong thời gian dài

Nhận trạng thái mới nhất của một thao tác chạy trong thời gian dài được trả về từ yêu cầu SignData.

Yêu cầu

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

Phản hồi

Trường metadata của một Thao tác được điền sẵn thông báo proto SignDataMetadata. Nếu có, response của một Toán tử sẽ được điền sẵn thông báo proto SignDataResponse.

Trong trường hợp thao tác chạy trong thời gian dài vẫn đang diễn ra:

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

Trong trường hợp thao tác chạy trong thời gian dài đã hoàn tất thành công:

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

Trong trường hợp thao tác chạy trong thời gian dài không thành công:

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

Tải chứng chỉ lên

Tải chứng chỉ X.509 lên ở định dạng PEM. Trong yêu cầu mẫu, chứng chỉ được mã hoá bằng PEM được biểu thị bằng biến $CERTIFICATE_IN_PEM_FORMAT.

Yêu cầu

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

Phản hồi

{}

Báo cáo lỗi trong quy trình cấp chứng chỉ

Đánh dấu một quy trình cấp phép chứng chỉ là không thành công và đặt thông báo lỗi thích hợp. Thông báo lỗi được truyền đến ứng dụng ChromeOS đã bắt đầu quy trình cấp phép chứng chỉ.

Yêu cầu

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

Phản hồi

{}