1、获取测试证书(需要注册为 SunSpec 的会员用户)
SunSpec 测试 PKI(公钥基础设施)证书包可通过 SunSpec 网站获取,地址为:
生成证书时,必须提供以下信息:
- 公司名称
- 联系人姓名和邮箱
- 设备类型(服务器或客户端, 设备端或agg 都选客户端)
- 制造商型号 OID
- 证书包数量(默认值为 1)
2、证书包文件说明
从SunSpec邮件回复的压缩包里面,包括了以下的文件。
测试证书包包含三个有效的设备证书、设备私钥、根证书,以及用于错误测试的带错误的设备证书。这些设备证书文件包含证书链中的所有中间 CA 证书以及设备私钥。
文件格式包括:
- PEM(
.pem)
- PKCS #7(
.p7b)
- PKCS #12(
.p12)
.p12 文件使用密码 password 进行加密。私钥文件采用 PKCS #8 格式,并以 PEM 编码。出于测试目的,建议服务器和客户端使用不同的中间证书链,因此证书包分为两种类型:客户端证书包和服务器证书包。
测试框架应获取完整的客户端和服务器证书包集合,并根据被测试设备类型使用相应的证书包。测试框架可以一次性安装证书集,并在对不同设备进行测试时重复使用相同的证书。
被测试设备应根据设备类型(客户端或服务器)获取相应的测试证书包,并在测试中使用 mca-mica-dev 证书链,因为它是最复杂的链选项,能最好地验证设备对合规证书链的支持能力。
测试证书包是基于设备类型、制造商型号 OID 和设备序列号生成的。
对于被测试设备,仅需以下三个文件:
- 根证书
- 设备私钥
- 设备证书
根证书和设备私钥位于证书包的顶层目录中,设备证书则位于设备所使用格式(pem、p7b 或 p12)对应的目录中。证书目录中还包含包含不同链长度的其他有效证书及包含错误的证书文件夹,可供测试框架用于更全面的测试。
证书包命名规则
证书包中的所有目录和文件名称遵循以下格式:
证书包文件命名元素说明
文件名元素 | 描述 |
sat | SunSpec 联盟测试(SunSpec Alliance Test) |
<type> | 类型字段:• cli - 客户端证书(client certificate)• svr - 服务器证书(server certificate)• key - 私钥(private key) |
<chain> | 证书链类型:• dev - 根证书直接签发(signed by root)• mica-dev - 由 MICA 签发,再由根证书签发(signed by MICA signed by root)• mca-mica-dev - 由 MCA 签发 MICA,再由根证书签发(signed by MICA signed by MCA signed by root) |
<model> | 型号 OID 的唯一部分,即 IANA PEN 前缀之后的部分。例如,OID 1.3.6.1.4.1.53630.2.10 表示为 53630_2_10 |
<serial number> | 设备的序列号(Serial number of the device) |
证书颁发机构(Certificate Authorities)
三个有效的设备证书分别使用了不同长度的证书链。

IEEE 2030.5 规范定义了三种证书颁发机构(CA)类型:
- SERCA:智能能源根证书颁发机构(Smart Energy Root CA)
- MCA:制造商 CA(Manufacturer CA)
- MICA:制造商签发 CA(Manufacturer Issuing CA)
MICA 是用于签发某个制造商关联设备证书的 CA。MICA 证书可以由 SERCA 直接签发,也可以由中间 CA(即 MCA)签发。而 MCA 证书始终由 SERCA 签发。
虽然 SERCA 也可以直接签发设备证书,但这不是标准做法。
有效的设备证书包含以下三种证书链:
serca-device:由 SERCA 直接签发设备证书
serca-mica-device:由 SERCA 签发 MICA,再由 MICA 签发设备证书
serca-mca-mica-device:由 SERCA 签发 MCA,再由 MCA 签发 MICA,最后由 MICA 签发设备证书
证书包中包含的证书颁发机构证书包括:
- SERCA
- MCA
- 由 MCA 签发的 MICA
- 由 SERCA 签发的 MICA
另外,还包括用于错误测试的错误证书,这些错误证书基于
serca-mica-device 证书链构建,包含故意设计的错误,用于验证设备对异常证书的处理能力。3、证书与测试用例对应
一般来说,需要用到证书包里面的以下几个文件
sat-root.pem (sunspec根证书) 和 sat-key_dev_xxxxx-1-1_1.3.6.1.4.1.xxxxx.1.1.agg.pem (设备私钥)在所有测试用例中都需要,设备证书和测试用例使用对应如下表。对应测试用例 | 文件名 | 说明 |
COMM-004A | sat-cli_dev_xxxxx-1-1_1.3.6.1.4.1.xxxxx.1.1.agg.pem | sunspec直接签发设备证书 |
COMM-004B | sat-cli_mica-dev_xxxxx-1-1_1.3.6.1.4.1.xxxxx.1.1.agg.pem | sunspec 签发 MICA,再由 MICA 签发设备证书 |
COMM-004C | sat-cli_mca-mica-dev_xxxxx-1-1_1.3.6.1.4.1.xxxxx.1.1.agg.pem | 由 sunspec 签发 MCA,再由 MCA 签发 MICA,最后由 MICA 签发设备证书 |
COMM-004D | sat-cli_mca-mica-extkeycrit-dev_xxxxx-1-1_1.3.6.1.4.1.xxxxx.1.1.agg.pem | 无效的拓展秘钥关键值。
需要开启证书校验 |
COMM-004E | sat-cli_mca-mica-nameconstraint-dev_xxxxx-1-1_1.3.6.1.4.1.xxxxx.1.1.agg.pem | 无效的名称非关键值。
需要开启证书校验 |
COMM-004F | sat-cli_mca-mica-policymapping-dev_xxxxx-1-1_1.3.6.1.4.1.xxxxx.1.1.agg.pem | 无效的策略映射非关键值。
需要开启证书校验 |
COMM-004G | sat-cli_mica-selfsigned-dev_xxxxx-1-1_1.3.6.1.4.1.xxxxx.1.1.agg.pem | 自签证书。
需要开启证书校验 |
对于COMM-004的用例,ABC正常证书的都是可以将域名校验和证书校验关闭通过的,但是后面几个异常证书的用例,需要将证书校验开启。
对于COMM-003用例,可以直接使用sunspec直接签发的设备证书,实测是可以通过的。但是这里有个细节,COMM-003用例是会校验证书所对应在测试服务器上的DER的LFDI值的,需要使用正常设备证书,计算出LFDI后,配置到测试工具上,不然会校验失败。
4、资料参考
《CSIPImplementationGuidev2.103-15-2018.pdf 》(5.2.1章节)
《IEEE Std 2030.5-2018 IEEE Standard for Smart Energy Profile Application Protocol》 (第6章节)
- 作者:Yibin
- 链接:https://yibin.dev/article/1cd60b50-99a4-80d0-aa34-f55de99319f4
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章






