0

尝试通过 nodeJS 为边缘设备实现 TPM 配置。 https://docs.microsoft.com/en-us/azure/iot-dps/quick-create-simulated-device-x509-node 如前所述,能够生成用于测试目的的自签名证书。请帮助我,如何为生产环境生成和验证。我在术语方面不太清楚,并且正在寻找做 RD 的起点。

这是一个自签名证书验证的示例代码,它源自 azure-IoT-sdk 节点 JS。

var deviceCert = {
  cert: fs.readFileSync(process.env.CERTIFICATE_FILE).toString(),
  key: fs.readFileSync(process.env.KEY_FILE).toString()
};

var transport = new Transport();
var securityClient = new X509Security(registrationId, deviceCert);
var deviceClient = ProvisioningDeviceClient.create(provisioningHost, idScope, transport, securityClient);
4

1 回答 1

1

如果您查看create_test_cert.js的源代码,您会看到您使用的教程中的参数创建了一个自签名证书。此外,代码使用Math.random而不是crypto.randomXXX. 这对我来说是一个危险信号,但它可能什么都不是。文章说,“自签名证书仅用于测试,不应在生产中使用。”

安全密钥管理的主题太大而无法在堆栈溢出答案中涵盖,但从 50,000 英尺的角度来看。您想要创建一个根 CA。大多数大公司在未连接到网络的机器上或在特殊的硬件密钥卡中保持这些非常安全。从那里您可以创建一个或多个中间证书。一种常见的模式是每个产品的根 CA 中间证书,然后是制造设备的每个工厂的产品证书中间证书。从那里,设备证书是从中间工厂证书创建的。这样,如果第三方工厂受到损害,您可以撤销它的证书并重新颁发,而无需取消整个产品或公司。

创建根证书和中间证书的代码在脚本中。您唯一要做的另一件事是使用组注册向设备供应服务注册根 CA 或中间 CA。这样,可以预配由已注册的密钥或具有向 DPS 注册的父密钥签名的所有设备密钥。团体注册所需的所有权证明代码也在脚本中。不久前,我为可以在此处找到的 SDK 的 C 版本编写了一个类似的 bash 脚本,以防万一有帮助。

于 2021-07-19T16:23:14.513 回答