解密 Product/Device Secret¶
通过 API 获取 product secret 或 device secret 时,返回的 product/device secret 值已经过加密处理。参照以下步骤获取和解密 product secret 和 device secret。
备注
仅当使用 V2.4 版本 的接入服务 API 获取 product/device secret 时,返回的值经过加密处理。使用 V2.4 以前版本的 API 不受影响。
前提条件¶
确保已获取用于身份授权的服务账号,并已完成授权。更多信息,参见 API 鉴权。
解密需访问 EnOS 管理控制台 > 身份与授权 获取当前服务账号的 RSA 密钥对,确保:
当前环境已安装 EnOS 2.4 CU1。
拥有当前服务账号所属组织的组织管理员权限。
解密 Product Secret¶
操作权限 ¶
使用 API 获取 product secret 前,需确保服务账号已被授予包含下列服务和操作权限的策略。有关授权服务账号的更多信息,参见 管理服务账号。
需授权的服务 |
所需操作权限 |
---|---|
产品 |
Create 或 Update |
操作步骤¶
以 Search Product 为例,介绍 product secret 获取和解密步骤。
参照 管理密钥对 创建或获取服务账号的 RSA 私钥文件。获取的私钥样式如下:
备注
使用轻量版设备连接与管理时,需联系系统管理员直接获取密钥对。
-----BEGIN PRIVATE KEY----- PrivateKeyABC123 -----END PRIVATE KEY-----
参照 如何调用 API 调用 Search Product API,请求以下参数。设置请求参数
requireSecret
为true
前,确保已为服务帐号创建过 RSA 私钥,否则将请求失败。url: https://{apigw-address}/connect-service/v2.4/products?action=search&orgId=yourOrgId method: POST requestBody: { "expression":"modelId=\"TestModel\"", "pagination":{ "pageNo":1, "pageSize":1 }, "requireSecret": true, "populateLastUpdateInfo": true }
得到以下返回内容:
{ "code":0, "msg":"OK", "requestId":"5428977e-c820-4595-9566-c1ba11c62438", "data":[ { "orgId":"yourOrgId", "productKey":"productKey", "productName":{ "defaultValue":"product01", "i18nValue":{} }, "productSecret":"EcryptedProductSecret", "sessionKey":"EcryptedsessionKey1", "productDesc":"", "productType":"Device", "dataFormat":"Json", "productTags":null, "protocolGatewayIds":null, "modelId":"TestModel", "dynamicActiveEnabled":false, "biDirectionalAuth":true, "createBy":"u15927947823741", "createTime":"1680514029150", "updateBy":"u15927947823741", "updateTime":1680514029150 } ], "pagination":{ "sortedBy":null, "pageNo":1, "pageSize":1, "totalSize":1980 } }
以 RSA 私钥为密钥,使用 RSA 解密工具计算出实际的 sessionKey。
密钥:
PrivateKeyABC123
密文:
EcryptedsessionKey1
私钥密码:创建密钥对时若设置了私钥密码,需输入私钥密码。
填充方式:PKCS1_Padding
得到的 sessionKey 样式如下:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
使用 AES 解密工具计算出实际的 product secret。
密钥:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
密文:
EcryptedProductSecret
模式:ECB
填充:PKCS7
密文编码:Base64
生成的明文即为 product secret。
解密 Device Secret¶
操作权限 ¶
使用 API 获取 device secret 前,需确保服务账号已被授予包含下列服务和操作权限的策略。有关授权服务账号的更多信息,参见 管理服务账号。
需授权的服务 |
所需操作权限 |
---|---|
设备管理服务 |
Full Access |
操作步骤¶
以 Search Device API 为例,介绍 device secret 获取和解密步骤。
参照 管理密钥对 创建或获取服务账号的 RSA 私钥文件。获取的私钥样式如下:
备注
使用轻量版设备连接与管理时,需联系系统管理员直接获取密钥对。
-----BEGIN PRIVATE KEY----- PrivateKeyABC123 -----END PRIVATE KEY-----
参照 如何调用 API 调用 Search Device API,请求以下参数。设置请求参数
requireSecret
为true
前,确保已为服务帐号创建过 RSA 私钥,否则将请求失败。url:https://{apigw-address}/connect-service/v2.4/devices?action=search&orgId=yourOrgId method: POST requestBody: { "expression": "assetId = 'ABC1234'", "pagination":{ "pageNo":1, "pageSize":1 }, "requireSecret": true, "populateLastUpdateInfo": true }
得到以下返回内容:
{ "code":0, "msg":"OK", "requestId":"5ee49000-11e0-476f-8a71-ca4f1b975422", "data":[ { "orgId":"yourOrgId", "assetId":"yourAssetId", "modelId":"AT_certificate_certBase_model_1", "modelIdPath":"/AT_certificate_certBase_model_1", "productKey":"productKey", "productName":{ "defaultValue":"AT_certificate_certBase_product_1", "i18nValue":{ "zh_CN": null, "en_ES": null, "ja_JP": null, "en_US": null } }, "productType":"Device", "dataFormat":"Custom", "deviceKey":"deviceKey", "deviceName":{ "defaultValue":"AT_cert", "i18nValue":{ "zh_CN":"AT_cert 数据准备" } }, "deviceSecret":"EcrypteddeviceSecret", "sessionKey":"EcryptedsessionKey2", "deviceDesc":null, "timezone":"+09:00", "deviceAttributes":{ "invType": 0, "Capacity": 123.0 }, "deviceTags":{ }, "mirrorSource": null, "firmwareVersion": null, "createTime":1679556857342, "status":"inactive", "activeTime":0, "lastOnlineTime":0, "lastOfflineTime":0, "measurepointLastUpdate":null, "eventLastUpdate":null, "attributeLastUpdate":null, "featureLastUpdate":null } ], "pagination":{ "sortedBy":null, "pageNo":1, "pageSize":2, "totalSize":211 } }
以 RSA 私钥为密钥,使用 RSA 解密工具计算出实际的 sessionKey。
密钥:
PrivateKeyABC123
密文:
EcryptedsessionKey2
私钥密码:创建密钥对时若设置了私钥密码,需输入私钥密码。
填充方式:PKCS1_Padding
得到实际的 sessionKey 如下:
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
使用 AES 解密工具计算出实际的 device secret。
密钥:
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
密文:
EcrypteddeviceSecret
模式:ECB
填充:PKCS7
密文编码:Base64
生成的明文即为 device secret。