C#代理客户端证书

C#代理客户端证书,c#,ssl,proxy,client-certificates,C#,Ssl,Proxy,Client Certificates,我们正在构建一个网关,该网关将接收来自公司的信息请求,然后将请求转发到保存该信息的选定服务提供商 乙二醇 公司A---HTTPS请求--->我们的代理--->服务提供商A 公司A---HTTPS请求--->我们的代理--->服务提供商B 其中一家服务提供商要求请求公司使用其颁发的客户证书 这意味着我们必须在服务器上安装客户端证书或不知道私钥的情况下传递客户端证书 目前,我们正在使用一个模拟请求公司的虚拟c#客户端进行测试,我们可以通过 var clientCertificate = Reques

我们正在构建一个网关,该网关将接收来自公司的信息请求,然后将请求转发到保存该信息的选定服务提供商

乙二醇

公司A---HTTPS请求--->我们的代理--->服务提供商A

公司A---HTTPS请求--->我们的代理--->服务提供商B

其中一家服务提供商要求请求公司使用其颁发的客户证书

这意味着我们必须在服务器上安装客户端证书或不知道私钥的情况下传递客户端证书

目前,我们正在使用一个模拟请求公司的虚拟c#客户端进行测试,我们可以通过

var clientCertificate = Request.HttpContext.Connection.ClientCertificate;
使用kestrel和asp.net Core 1.0

但是,我们需要使用web请求将客户端证书发送给服务提供商,例如

var req = (HttpWebRequest)WebRequest.Create(uri);

req.ClientCertificates.Add(clientCertificate);
我们注意到代理服务器获得的客户端证书没有私钥。如果它是一个私钥,则应为

我们无法让模拟请求公司的测试c#客户端向我们的代理发送客户端证书,除非测试客户端具有可用的私钥

这使我们认为,在不知道私钥的情况下,用客户端证书代理请求是不可能的

不幸的是,我们没有可用于测试的服务提供者接口,因为它目前正在构建中

Q1 如果您没有可用的私钥,c#是否会发送带有web请求的客户端证书

问题2 远程服务器是否接受没有私钥的证书,或者远程服务器是否要求请求主机(在本例中是我们的代理)拥有私钥,以便执行SSL握手和验证客户端证书


我们正在尝试确定上述场景是否在代理不知道私钥的情况下工作。

如果这是可能的,那将违背客户端证书的目的,因为任何人都可以拦截并使用这些证书,假装他们是实际的受让人。换句话说,在一个旨在首先消除中间商的计划中,你正试图成为中间商。

谢谢你,这一简洁的回答把我们被要求做的事情放在了上下文中,这是不可能的。正是因为它被设计来阻止人们的提问。是的!现在试着向你的管理层和服务提供商的管理层解释一下:)在我的回答中,我几乎要开始一些有趣的对话了!至少明天是星期五:)