> 文章列表 > iOS Matter 操作证书签发方案

iOS Matter 操作证书签发方案

iOS Matter 操作证书签发方案

在 Matter 配网和操作中,为了信息交互的安全,在配网时,Commissioner自身需要完整的证书,同时需要向设备安装操作证书。

Matter 证书包含:

  • RCA: 根证书

  • ICA: 中间证书,可选

  • NOC: 操作证书(注意有以下两种操作证书)

    • MTRDeviceController操作证书: MTRDeviceController 使用的 NOC
    • 设备操作证书:发送给设备的NOC

MTRDeviceController初始化

必须要的参数

ipk: 16字节,对 fabric 有效,随机数。

VendorID: 厂商ID

keyPair: 基于 RCA 或者 commissioner NOC(如果指定的话) 的公私钥对。还要用私钥实现相关加密方法。

证书签发方式

在 Apple 提供的 Matter.framework 框架中,提供三种不同的证书签发方案。

  1. 本地自动签发(开源中DarWin 示例工程方案),只需要指定FabricID 即可完成整个证书的自动签发,缺点:本设备有效,同步难。

  2. 本地指定 RCA, ICA,NOC(以上三个证书可以本地保存,也可以云端请求),后续自动根据证书参数生成设备 NOC. 缺点:不安全

  3. 所有证书云端签发: Commissioner初始化之前,从云端获取RCA, ICA,NOC。自行实现 nocChinIsser ,根据 CSR 信息由云端生成设备的 NOC。缺点:依赖网络和云端证书。

还需要指定 paa 列表,可以参考dcl (csa-iot.org)否则会出现设备不信任回调。

节点操作凭证过程

iOS Matter 操作证书签发方案

设备节点操作证书是基于 CSR 信息签发。可以由本地默认签发,也可以通过服务器签发。

服务器签发

服务器签发需要自定义签发器,并且遵守MTROperationalCertificateIssuer并回调设备节点操作证书。

- (void)issueOperationalCertificateForRequest:(MTROperationalCSRInfo *)csrInfoattestationInfo:(MTRDeviceAttestationInfo *)attestationInfocontroller:(MTRDeviceController *)controllercompletion:(void (^)(MTROperationalCertificateChain * _Nullable info,NSError * _Nullable error))completion  API_AVAILABLE(ios(16.4)){// 基于csr信息 在云端或者自行签发设备的操作证书。}

为MTRDeviceController设置操作证书签发器

// iOS 16.4
MTRDeviceControllerStartupParams * params = [[MTRDeviceControllerStartupParams alloc] initWithIPK:ipk operationalKeypair:keypair operationalCertificate:nocCertificate intermediateCertificate:icaCertificate rootCertificate:rootCertificate];
//xxxIssuer *issuer =   签发器实体
//dispatch_queue_t nocIssuerQueue =  签发队列
[params setOperationalCertificateIssuer:issuer];
[params setOperationalCertificateIssuerQueue:nocIssuerQueue];