2016-05-19 35 views
1

我有一个Web应用程序对第​​三方API执行客户端证书身份验证。该应用程序正在工作,但我想将其移至Azure应用程序服务。覆盖客户端证书身份验证验证

用于客户端身份验证的证书不是从受信任根证书存储区的CA颁发的。出于显而易见的原因,Azure不允许向App Services中的受信任根证书存储区添加证书。

据我所知,如果无法验证信任链,客户端上的默认行为是不发送客户端证书。 .net中有没有办法覆盖这种行为并发送证书?

我知道ServicePointManager.ServerCertificateValidationCallback允许您重写检查服务器证书,但不验证客户端证书。

回答

0

据我所知,我认为你是在正确的轨道,并且使用此代码:

ServicePointManager 
.ServerCertificateValidationCallback += 
(sender, cert, chain, sslPolicyErrors) => true; 

实际上应该得到你想要的结果?由于服务器将验证客户端证书,因此抛出错误,将回调设置为true将覆盖任何错误。我不清楚你是否已经尝试过这个解决方案,听起来像你可能已经完成了。

+0

我试过这种方法。它似乎不适用于发送客户端证书。我遇到的问题是,即使我将一个客户端证书添加到请求中,它也永远不会实际发送,而且ServerCertificateValidationCallback也不会被调用。 – Jacob

+1

并非所有这些都否定了使用证书的观点吗?如果您只是接受任何证书而不考虑有效性,为什么要使用客户端证书呢? –

+0

我同意@SimonW,但是如果您没有根CA(我知道有限的情况),那么它仍然可能有效,或者您使用的是自签名证书。就我个人而言,我会一直尝试并正确接受证书。 –

相关问题