Revoke Certificate

撤销设备绑定的证书。

操作权限

需授权的资源 所需操作权限
设备管理 Full Access

约束条件

  • 该设备存在
  • 该证书与该设备绑定
  • 该证书属于有效状态

请求格式

POST https://{apigw-address}/connect-service/v2.0/certificates?action=revoke

请求参数 (URI)

注解

以下非必须字段中,必须提供 assetIdproductKey + deviceKey 的组合,用于指定设备。

名称 位置 必需/可选 数据类型 描述
orgId Query 必需 String 资产所属的组织ID。如何获取orgId信息>>
assetId Query 可选 String 资产ID。如何获取Asset ID信息>>
productKey Query 可选 String 设备资产的product key。
deviceKey Query 可选 String 设备资产的device key。

请求参数(Body)

名称 必需/可选 数据类型 描述
certSn 必需 Integer 需要撤销的证书序列号。
reason 可选 Integer 撤销证书的原因。包括下列选项: + 0: UNSPECIFIED.未确定证书为何被吊销。 + 1: KEY_COMPROMISE.已知或怀疑证书使用者的私钥已被破坏。 + 3: AFFILIATION_CHANGED. 主体的名称或其他信息已更改。 + 4: SUPERSEDED:证书已被取代. 比如证书更新请求后原证书撤销。 + 5: CESSATION_OF_OPERATION. 不再需要该证书。 + 6: CERTIFICATE_HOLD. 证书已被搁置、冻结等。 + 9: PRIVILEGE_WITHDRAWN. 授予证书主体的授权已被撤消,即认为CA已经无效,没有权限授权证书,该证书已经不可信。

错误码

代码 类型 描述 解决方法
99400 invalid argument: Device identifier is invalid 设备标识符无效。 在请求中声明 assetIdproductKey + deviceKey 以指定设备。
99400 Invalid Argument certSn:certSn is missing 缺少 certSn 参数。 在请求中传入正确的 certSn 参数。
99400 Call ca error!: Certificate service err info:, code: (code), message: (message content), detail message: (detailed message content) 调用EnOS证书服务参数异常。 详细错误信息原因由message或 detail message给出。
99400 Invalid cert request!message: (message content), detail message: (detailed message content) 无效证书请求。 详细错误信息原因由message或 detail message给出。
99400 Query cert is failed!message: (message content), detail message: (detailed message content) 查询证书失败。 详细错误信息原因由message或 detail message给出。
99400 When calling Certificate Services, the call parameters are invalid.message: (message content), detail message: (detailed message content) 当调用证书服务时,调用参数无效。 详细错误信息原因由message或 detail message给出。
99400 Serial number of the certificate to be updated is required. 待更新证书的序列号是必需字段。 在请求中声明 certSn 参数。
99400 Serial number of the new certificate is invalid (less than 0). 传入的证书序列号无效(小于0)。 确保请求中声明的 certSn 参数有效。
99400 The certificate list bound to the device does not have the certificate,or the certificate is bound to other devices. 原证书未与设备绑定或绑定另一个设备。 确保证书有效。
11404 Device cannot be found 设备未找到。 确认该设备确实存在。
99500 Internal error of certificate service IoT Hub证书服务内部错误。 联系管理员。
99500 Internal error of product service. IoT Hub产品服务内部错误。 联系管理员。
99500 Internal error of IoT hub service IoT Hub 内部服务错误。 联系管理员。

示例

请求示例

url: https://{apigw-address}/connect-service/v2.0/certificates?action=revoke&assetId=yourDeviceAssetId&orgId=yourOrgId
method: POST
requestBody:
{
    "reason":0,
    "certSn":52739
}

响应示例

{
    "code":0,
    "msg":"OK",
    "requestId":"e3391ff8-19ba-4809-b944-c1b29f468af9",
    "data":null
}

Java SDK调用示例

package com.envisioniot.enos.api.sample.connect_service.cert;

import com.envision.apim.poseidon.config.PConfig;
import com.envision.apim.poseidon.core.Poseidon;
import com.envisioniot.enos.connect_service.v2_1.cert.RevokeCertificateRequest;
import com.envisioniot.enos.connect_service.v2_1.cert.RevokeCertificatesResponse;
import com.envisioniot.enos.connect_service.v2_1.cert.RevokeReason;
import com.envisioniot.enos.connect_service.vo.DeviceIdentifier;

public class RevorkCert {
    public static void main(String[] args) {
        String appKey = "yourAppAccessKey";
        String appSecret = "yourAppSecretKey";
        String serverUrl = "https://{apigw-address}";

        String orgId = "yourOrgId";
        Integer certSn = 2661;
        RevokeCertificateRequest request = new RevokeCertificateRequest();
        /*
         * 使用以下任意一个参数或参数组合以指定设备:
         * ASSET_ID
         * PRODUCT_KEY + DEVICE_KEY
         */
        request.setAssetId(yourAssetId);
        request.setProductKey(yourProductKey);
        request.setDeviceKey(yourDeviceKey);
        request.setDevice(identifier);
        request.setCertSn(certSn);
        request.setOrgId(orgId);
        request.setReason(RevokeReason.UNSPECIFIED);
        RevokeCertificatesResponse certRsp = Poseidon.config(PConfig.init().appKey(appKey).appSecret(appSecret).debug())
                .url(serverUrl)
                .getResponse(request, RevokeCertificatesResponse.class);
        if (certRsp.success()) {
            System.out.println("Certificate revoked.");
        }
    }

}