使用代理时证书被拒绝
Certificate rejected when using proxy
我必须连接到 REST 网络服务,并使用证书对我自己进行身份验证。
当我从公司网络外部连接并且不使用代理服务器时,一切正常。
问题是我必须在我们的网络中使用服务,我必须在其中使用代理服务器。
当我从网络内部尝试时,我只收到“401 - 未经授权”
private static void RestWithCert(string certificatePath,string baseUrl,string method)
{
HttpClientHandler handler = new HttpClientHandler();
//when trying the code OUTside our company network I remove the proxy below
handler.Proxy = new WebProxy("http://proxy.company.dk");
handler.ClientCertificates.Add(new X509Certificate2(certificatePath, "password"));
HttpClient client = new HttpClient(handler);
client.BaseAddress = new Uri(baseUrl);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.GetAsync(method).Result;
var status = response.StatusCode;
}
网络外,无代理:状态 = OK
在网络内部,使用代理:状态 = 未授权
在网络内部,没有代理:连接超时
我无法控制我尝试访问的代理或网络服务
这是怎么回事?代理是否拦截证书并替换它?
代理可以捕获 SSL 流量并通过充当 ManInTheMiddle 连接到目标服务器,或者允许直接与目标服务器建立 SSL 连接。
当需要客户端证书时,代理必须允许直接连接,因为代理无法在目标服务器需要时提供有效证书。在 SSL 握手期间,一些交换数据使用客户端证书的私钥进行签名以验证消息,而代理没有该私钥
可能是您的代理正在捕获流量。我建议检查一下。您可以验证在 SSL 连接期间收到的证书是否对应于目标服务器或代理
我必须连接到 REST 网络服务,并使用证书对我自己进行身份验证。
当我从公司网络外部连接并且不使用代理服务器时,一切正常。
问题是我必须在我们的网络中使用服务,我必须在其中使用代理服务器。 当我从网络内部尝试时,我只收到“401 - 未经授权”
private static void RestWithCert(string certificatePath,string baseUrl,string method)
{
HttpClientHandler handler = new HttpClientHandler();
//when trying the code OUTside our company network I remove the proxy below
handler.Proxy = new WebProxy("http://proxy.company.dk");
handler.ClientCertificates.Add(new X509Certificate2(certificatePath, "password"));
HttpClient client = new HttpClient(handler);
client.BaseAddress = new Uri(baseUrl);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.GetAsync(method).Result;
var status = response.StatusCode;
}
网络外,无代理:状态 = OK
在网络内部,使用代理:状态 = 未授权
在网络内部,没有代理:连接超时
我无法控制我尝试访问的代理或网络服务
这是怎么回事?代理是否拦截证书并替换它?
代理可以捕获 SSL 流量并通过充当 ManInTheMiddle 连接到目标服务器,或者允许直接与目标服务器建立 SSL 连接。
当需要客户端证书时,代理必须允许直接连接,因为代理无法在目标服务器需要时提供有效证书。在 SSL 握手期间,一些交换数据使用客户端证书的私钥进行签名以验证消息,而代理没有该私钥
可能是您的代理正在捕获流量。我建议检查一下。您可以验证在 SSL 连接期间收到的证书是否对应于目标服务器或代理