Windows 将 x.509 主题字段中的状态显示为 S=<state>
Windows displays states in x.509 Subject fields as S=<state>
我注意到 Windows 会将 x.509 证书主题显示为 S=some-state
而不是 x.520 所描述的 ST=some-state
:https://www.rfc-editor.org/rfc/rfc1779 ( Table1).
例如:
$> (Get-AuthenticodeSignature -FilePath C:\Windows\System32\cmd.exe).SignerCertificate.Subject
CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
我还以编程方式解析了相同的证书,并收到了 ST=Washington
作为输出,因此底层 DER 显然是正确的,问题出在表示中。
有谁知道微软为什么这样做?我错过了标准的一部分吗?我只是出于好奇想知道。提前致谢。
X.500 名称的 Microsoft 实现支持标准化名称。此外,Microsoft 实现支持别名。也就是说,特定的对象标识符可能有多个到友好名称的映射。例如,StateOrProvince
RDN 映射到三个友好名称:
2.5.4.8 -- State Or Province (S)
pwszName = S
CRYPT_RDN_ATTR_OID_GROUP_ID (5)
dwLength = 0
2.5.4.8 -- State Or Province (S)
pwszName = ST
CRYPT_RDN_ATTR_OID_GROUP_ID (5)
dwLength = 0
2.5.4.8 -- State Or Province (S)
pwszName = State Or Province
CRYPT_EXT_OR_ATTR_OID_GROUP_ID (6)
dwValue = 0
因此,OID=2.5.4.8
可以映射到 S
、ST
或 State Or Province
。它的工作方向相反:所有别名都将被转换为相同的 OID 值。
从 OID 到友好名称的默认转换取决于 OID 组(在请求时)和注册顺序(优先级)。在给定的情况下,S
别名比 ST
.
具有更高的优先级
我注意到 Windows 会将 x.509 证书主题显示为 S=some-state
而不是 x.520 所描述的 ST=some-state
:https://www.rfc-editor.org/rfc/rfc1779 ( Table1).
例如:
$> (Get-AuthenticodeSignature -FilePath C:\Windows\System32\cmd.exe).SignerCertificate.Subject
CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
我还以编程方式解析了相同的证书,并收到了 ST=Washington
作为输出,因此底层 DER 显然是正确的,问题出在表示中。
有谁知道微软为什么这样做?我错过了标准的一部分吗?我只是出于好奇想知道。提前致谢。
X.500 名称的 Microsoft 实现支持标准化名称。此外,Microsoft 实现支持别名。也就是说,特定的对象标识符可能有多个到友好名称的映射。例如,StateOrProvince
RDN 映射到三个友好名称:
2.5.4.8 -- State Or Province (S)
pwszName = S
CRYPT_RDN_ATTR_OID_GROUP_ID (5)
dwLength = 0
2.5.4.8 -- State Or Province (S)
pwszName = ST
CRYPT_RDN_ATTR_OID_GROUP_ID (5)
dwLength = 0
2.5.4.8 -- State Or Province (S)
pwszName = State Or Province
CRYPT_EXT_OR_ATTR_OID_GROUP_ID (6)
dwValue = 0
因此,OID=2.5.4.8
可以映射到 S
、ST
或 State Or Province
。它的工作方向相反:所有别名都将被转换为相同的 OID 值。
从 OID 到友好名称的默认转换取决于 OID 组(在请求时)和注册顺序(优先级)。在给定的情况下,S
别名比 ST
.