โปรดดูภาพรวมของฟีเจอร์ 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 Bad Request
ขอลายเซ็นในหลักฐานการครอบครอง
ขอให้ไคลเอ็นต์ที่ขอใบรับรองลงนามในข้อมูลบางอย่างโดยใช้ 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
การตอบกลับ
การตอบกลับจะมี Operation ที่มีช่องข้อมูลเมตาซึ่งป้อนข้อมูลด้วยข้อความ SignDataMetadata proto
{
"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
ของ Operation ด้วยข้อความ Proto ของ SignDataMetadata หากมี response
ของ Operation จะสร้างขึ้นด้วยข้อความ SignDataResponse proto
ในกรณีที่การดำเนินการที่ใช้เวลานานยังคงดำเนินอยู่ ให้ทำดังนี้
{
"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
การตอบกลับ
{}