【发布时间】:2019-12-16 01:43:08
【问题描述】:
X.509 证书有签名值。
我想用根 CA 或中间 CA 的公钥验证客户端证书中的签名。
我知道他们俩的信息。但我不知道需要什么消息。
我想问一下生成签名值需要什么消息?
它只需要十六进制的发行者信息或主题名称吗?还是颁发者在生成证书时是任意的?
【问题讨论】:
-
根据操作系统/平台,您需要执行执行此验证的证书链接引擎。
X.509 证书有签名值。
我想用根 CA 或中间 CA 的公钥验证客户端证书中的签名。
我知道他们俩的信息。但我不知道需要什么消息。
我想问一下生成签名值需要什么消息?
它只需要十六进制的发行者信息或主题名称吗?还是颁发者在生成证书时是任意的?
【问题讨论】:
验证签名是不够的,您需要验证证书链和所有相关的策略约束。在 Windows / C 中,您将使用 CertGetCertificateChain(https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-certgetcertificatechain),但每个平台都有自己解决此问题的方法。它比大多数人意识到的要复杂得多 (https://www.cs.utexas.edu/~shmat/shmat_ccs12.pdf),因此请坚持使用平台 API 进行此验证。
【讨论】: