所有证书现在都是使用另一个自签名 CA 证书生成的。我正在为一个项目做 POC。
我必须找出一种方法来获取有关通过客户端请求接收到的客户端证书的信息。我该怎么做呢?
编辑:更具体地说,我想检查来自两个不同传入 Web 请求的两个客户端证书是否相似
所有证书现在都是使用另一个自签名 CA 证书生成的。我正在为一个项目做 POC。
我必须找出一种方法来获取有关通过客户端请求接收到的客户端证书的信息。我该怎么做呢?
编辑:更具体地说,我想检查来自两个不同传入 Web 请求的两个客户端证书是否相似
如何监控通过请求发送的客户端证书?
客户端证书用于建立 SSL/TLS 连接。HTTPS 请求发生在较高级别,与较低级别的 SSL/TLS 通道无关。
话虽如此,可能有一个可用的令牌或 cookie 将来自客户端证书的用户身份与 HTTP 请求绑定在一起。
我必须找出一种方法来获取有关通过客户端请求接收到的客户端证书的信息。我该怎么做呢?
你没有说你有什么,你想要什么信息。您可能需要更具体。
我想检查来自两个不同传入 Web 请求的两个客户端证书是否相似
您需要在此上下文中定义“相似”。这可能很棘手。
天真地,您可以使用{Subject's Distinguished Name}
or{Subject's Distinguished Name, Public Key}
来查看两个是否“相等”。但我不确定如何区分“相似”(也许是同一个Issuer?)。
谨防仅使用{Subject's Distinguished Name}
. 这是最新的 Android APK 签名错误:Android Fake ID Vulnerability Let Malware Impersonate Trusted Applications。
X509 证书将公钥绑定到实体。因此,基于 (1) 主题、(2) 公钥和 (3) 颁发者(在 (1) 和 (2) 上应用签名),证书是“唯一的”。
实体出现在Subject中。例如,服务器或用户。服务器通过其 DNS 名称等进行识别;而用户是通过他们的电子邮件地址来识别的。您可以通过Subject's Distinguished Name获取主题名称。
您可以从证书中获取主题的公钥。公钥将始终可用,就像主题始终可用一样。受信任的机构将两者绑定,如果缺少任何一个,则不会签署请求。
发行人签署了主体的证书。它是受信任的权威机构,通常是公共 CA。您可以从Issuer Distinguished Name中获取颁发者的名称。
如果需要,您可以从授权密钥标识符(AKI) 获取颁发者公钥的摘要。要获取实际的公钥,您需要检查颁发者的证书。
当您验证主题证书上的签名时,您需要颁发者的证书。您需要它,因为您需要来自颁发者的公钥来验证主题证书上的证书。
您可以在RFC 4514,轻量级目录访问协议 (LDAP):专有名称的字符串表示中阅读专有名称(以及构成它们的相对专有名称(RDN))。