2.4证书和证书扩展配置文件
2.4.1 概述
2.4规定了使用公钥密钥加密的DLMS/COSEM系统所需要的证书和认证扩展配置文件。所有证书应具有X.509版本3证书所指定的结构。对于展示证书和证书扩展的字段的表,应用以下符号:
------m(强制性):填写字段;
------o(可选):字段是可选的;
------x(不使用):不得使用字段。
每个证书扩展被指定为关键或非关键。如果证书使用系统遇到无法识别的关键扩展或包含无法处理的信息的关键扩展,则该证书使用系统将拒绝该证书。如果非关键扩展不被识别,它可能会被忽略,但如果被识别,将被处理。
本文件规定了最低要求。具体项目的配套规范可以规定更严格的要求,例如,本文档中指定的字段可选变为强制的,或将指定为非关键的扩展名指定为关键。
2.4.2 X.509 v3证书
X.509证书是三个必填字段的SEQUENCE,如表13所示。
tbsCertificate字段包含主体和发行者的名称,与主题相连接的公钥,有效期和其他相关信息。tbsCertificate的字段总结在表14中。tbsCertificate通常包括扩展;这些在2.4.4中有描述。
signatureAlgrithm字段包含CA用于签署此证书的加密算法的标识符。
Groovy
AlgorithmIdentifier::= SEQUENCE{
algorithm OBJECT IDENTIFIER
parameters ANY DEFINED BY algorithm OPTIONAL
}
DLMS/COSEM中使用的两种算法标识符是:
------在安全组件1的情况下,ecdsa-with-SHA256,OID 1.2.840.100045.4.3.2;
------在安全组件2的情况下,ecdsa-with-SHA384,OID 1.2.840.100045.4.3.3;
signatureValue包含在ASN.1 DER编码的tbsCertificate上计算的数字签名。使用ASN.1 DER编码的tbsCertificate作为签名函数的输入。
通过生成此签名,CA将在tbsCertificate字段中证明信息的有效性。特别地,CA证明公钥材料和证书主体之间的绑定。
2.4.3 tbsCertificate
2.4.3.1 综述
tbsCertificate的字段如表14所示。
2.4.3.2 序列号
2.4.3.3 发行者和主题
Issuer字段 标识已签名并颁发证书的实体。Subjuect字段标识与存储在主题公钥字段中的公钥相连接的实体。
2.4.3.4 有效期
证书有效期是CA保证保留关于证书状态的信息的时间间隔。该字段表示为两个日期的SEQUENCE:
------证书有效期开始的日期(notBefore);
------证书有效期结束的日期(noAfter)。
除DLMS/COSEM服务器外,在CA证书、子CA证书和终端实体情况下,notBefore和notAfter应是明确定义的日期。可以为DLMS/COSEM服务器颁发没有过期时间的证书;这种证书在设备的整个使用寿命都可以用。为了表明证书没有明确定义的到期日期,notAfter应该被分配GeneralizedTime值99991231235959Z。
2.4.3.5 SubjectPublicKeyInfo
SubjectPublicKeyInfo字段应具有以下结构:
Groovy
SubjectPublicKeyInfo::=SEQUENCE{
Algorithm AlgorithmIdentifier,
subjectPublicKey BIT STRING}
算法标识符有以下ASN.1结构定义:
AlgorithmIdentifier::=SEQUENCE{
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL}
2.4.3.6 主题唯一ID
可以在除服务器证书之外的终端设备证书中可选地使用主题唯一ID。此字段的使用可由具体项目的配套规范来决定。