如何在 rfc6960 的第 3.2 节中实施模糊的 OCSP 签名响应接受要求

问题描述

我目前正在用 C# 实现一个内部 OCSP 响应器,并想为响应创建一个验证器类,但需要一些说明

  1. 收到的响应中标识的证书对应于 在相应请求中标识的证书;

有问题的证书是请求试图查找其状态的证书吗?还是整个请求/响应的链对象中的一个?我应该比较请求和响应之间的哪些信息以确保它们匹配?

我目前正在检查单个请求中的 CertificateID 是否与单个响应列表中的任何 CertificateID 匹配

public static bool CertificateMatch(OcspSingleRequest singleRequest,OcspResponse response) => 
       response.Responses.Any(x => x.GetCertID().Equals(singleRequest.GetCertID()));
  1. 响应上的签名有效

对基本响应执行 .Verify(IssuerCertificate) 是否足以满足此标准?

  1. 签名者的身份与请求的预期接收者相匹配

将响应响应者 ID NameKeyHash 与传入的 expectedResponderCertificate SubjectDN 匹配并计算 publicKeyHash 是否足以验证这一点?

       if ((responderID.Name != expectedResponderCertificate.SubjectDN) && 
           (responderID.KeyHash != expectedResponderKeyHash))
       {
           return false;
       }
       return true;
  1. 签名者目前被授权为相关证书提供回复

我认为唯一的方法是直接联系 CA,或者如果它没有过期就信任它

感谢您提供任何见解。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)