无法通过RestSharp发送客户端证书

9
我可以访问我的令牌并将其添加到RestSharp RestClient中。
//Create rest client.
IRestClient client = new RestClient("https://localhost.fiddler:44300");

var webClientCertificate = GetWebClientCertificate();

//Don't ask why... I'm getting an abiguous ref here.
client.ClientCertificates = new System.Security.Cryptography.X509Certificates.X509Certificate2Collection(){webClientCertificate};

IRestRequest request = new RestRequest("api/get-secure-data", Method.GET);
var response = client.Execute(request);

GetWebClientCertificate:

public X509Certificate2 GetWebClientCertificate()
{
  //Access certificate store
  X509Store certificateStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
  certificateStore.Open(OpenFlags.ReadOnly);
  var certificateCollection = certificateStore.Certificates.Find(X509FindType.FindBySubjectName, "web-client",false);
  var webClientCertificate = certificateCollection[0];
  certificateStore.Close();

  return webClientCertificate;
}

我已经获得了证书,并且可以看到它已经添加到客户端中。 服务器代码
    [HttpGet]
    [Route("api/get-secure-data")]
    [RequireHttps]
    public IHttpActionResult GetSecureData()
    {
        try
        {
            X509Certificate2 cert = Request.GetClientCertificate(); //returns null
            PublicKey clientKey = cert.PublicKey;

            return Ok(clientKey);
        }
        catch (Exception exception)
        {
            return InternalServerError(exception);
        }
    }

Fiddler没有显示身份验证标头,我缺少了什么?
1个回答

0

首先,您只需要设置证书本身,收集已经存在。其次,在使用证书进行签名或认证(加密)时,不能关闭存储区,因为您已经与上下文断开连接。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接