List Certificate

显示设备绑定的证书列表。

操作权限

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

请求格式

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

请求参数 (URI)

注解

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

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

响应参数

名称 数据类型 描述
data DeviceCertDetailInfo 结构体数组 有关DeviceCertDetailInfo的定义,见 DeviceCertDetailInfo 结构体。

DeviceCertDetailInfo 结构体

名称 数据类型 描述
certSN String 证书编号。
cert String 申请到的证书内容。
certStatus Integer 证书状态: - 0: Valid - 1: Revoked - 2: Expired
issuer String 签发者信息。
subject String 请求主体信息。
signDate long 签发时间时间戳。
effectiveDate long 证书开始生效的时间戳。
expireDate long 证书过期的时间戳。
revoker String
certStatus 为 1 时才会出现。表示撤销者。
revokerReason String
certStatus 为 1 时才会出现。表示撤销原因。

错误码

代码 类型 描述 解决方法
99400 invalid argument: Device identifier is invalid 设备标识符无效。 在请求中声明 assetIdproductKey + deviceKey 以指定设备。
99400 Call ca error!: Certificate service err info:, code: (code), message: (message content), detail message: (detailed message content) 调用EnOS证书服务参数异常。 详细错误信息原因由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给出。
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 内部服务错误。 联系管理员。

示例

请求示例

GET https://{apigw-address}/connect-service/v2.0/certificates?action=list&assetId=youAssetId&orgId=youOrgId

响应示例

{
    "code": 0,
    "msg": "OK",
    "requestId": "318d8b1f-1f27-4dd4-8299-b75a2015d425",
    "data": [
        {
            "certSN": "52725",
            "cert": "52725",
            "certStatus": 1,
            "issuer": "EMAILADDRESS=ca@eniot.io, CN=EnOS CA, OU=EnOS CA, O=EnOS, L=Shanghai, ST=Shanghai, C=CN",
            "subject": "EMAILADDRESS=xT7EaR, OU=EnOS, CN=xMen1, O=EnOS, L=Shanghai, ST=Shanghai, C=CN",
            "signDate": 1581216505000,
            "effetiveDate": 1581216505000,
            "expireDate": 1582080505000,
            "revoker": "IoT_Hub",
            "revokerReason": "KEY COMPROMISE",
            "isEnosCert": true,
            "issueAuthority": "RSA"
        },
        {
            "certSN": "52726",
            "cert": "52726",
            "certStatus": 0,
            "issuer": "EMAILADDRESS=ca@eniot.io, CN=EnOS ECC CA, OU=Envision Digital, O=Envision, L=Shanghai, ST=Shanghai, C=CN",
            "subject": "EMAILADDRESS=uKGdK, OU=EnOS, CN=yPI9z8z, O=EnOS, L=Shanghai, ST=Shanghai, C=CN",
            "signDate": 1581218161000,
            "effetiveDate": 1581218161000,
            "expireDate": 1582082161000,
            "audit": {
                "createBy": "youOrgId",
                "createTime": 1581218161773,
                "updateBy": "youOrgId",
                "updateTime": 1581218161773,
                "ns": "youOrgId",
                "deleted": false
            },
            "revoker": "",
            "revokerReason": "",
            "isEnosCert": true,
            "issueAuthority": "ECC"
        },
        {
            "certSN": "52727",
            "cert": "52727",
            "certStatus": 2,
            "issuer": "EMAILADDRESS=ca@eniot.io, CN=EnOS ECC CA, OU=Envision Digital, O=Envision, L=Shanghai, ST=Shanghai, C=CN",
            "subject": "EMAILADDRESS=xT7EaR, OU=EnOS, CN=xMen1, O=EnOS, L=Shanghai, ST=Shanghai, C=CN",
            "signDate": 1581234648000,
            "effetiveDate": 1581234648000,
            "expireDate": 1581493848000,
            "revoker": "",
            "revokerReason": "",
            "isEnosCert": true,
            "issueAuthority": "ECC"
        }
    ]
}

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.ListCertificatesRequest;
import com.envisioniot.enos.connect_service.v2_1.cert.ListCertificatesResponse;
import com.envisioniot.enos.connect_service.vo.CertificateInfo;
import com.envisioniot.enos.connect_service.vo.DeviceIdentifier;

import java.util.List;

public class ListCert {

    public static void main(String[] args) {
        ListCertificatesRequest listCertificatesRequest = new ListCertificatesRequest();
        String appKey = "AccessKey of your APP";
        String appSecret = "SecretKey of your APP";
        String serverUrl = "https://{apigw-address}";

        String orgId = "yourOrgId";
        /*
         * 使用以下任意一个参数或参数组合以指定设备:
         * ASSET_ID
         * PRODUCT_KEY + DEVICE_KEY
         */
        listCertificateRequest.setAssetId(yourAssetId);
        listCertificateRequest.setProductKey(yourProductKey);
        listCertificateRequest.setDeviceKey(yourDeviceKey);
        listCertificatesRequest.setDevice(device);
        listCertificatesRequest.setOrgId(orgId);
        ListCertificatesResponse certRsp = Poseidon.config(PConfig.init().appKey(appKey).appSecret(appSecret).debug())
                .url(serverUrl)
                .getResponse(listCertificatesRequest, ListCertificatesResponse.class);
        List<CertificateInfo> certificateInfos = certRsp.getData();
        if (certificateInfos != null) {
            for (CertificateInfo certificateInfo : certificateInfos) {
                System.out.println(certificateInfo);
            }
        }
    }
}