我正在尝试从我的SharePoint 2007 WebPart向另一个Web服务发送HttpRequest . 该服务需要X509客户端证书进行身份验证 .

我写了一个简单的控制台应用程序,在发送请求和使用我的证书进行身份验证时没有问题:

byte[] certBytes = getBytes();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("<server_url>");
X509Certificate2 cert = new X509Certificate2(certBytes, "<password>", X509KeyStorageFlags.MachineKeySet);
request.ClientCertificates.Add(cert);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

但是,只要从我的SharePoint Webpart运行相同的代码,它就会失败,因为它“无法创建安全的SSL / TSL连接” .

备注:如果我不使用X509KeyStorageFlags.MachineKeySet标志,我在SharePoint上获得"Access denied" . 根据http://social.msdn.microsoft.com/Forums/en/windowssecurity/thread/f1981374-5a25-45c7-aea8-aad859800ae7标志应该解决这个问题 .

(基于Apache)Web服务记录以下错误:

[error] Re-negotiation handshake failed: Not accepted by client!?

知道为什么相同的代码适用于我的控制台应用程序,但不适用于SharePoint?