Azure Web服务作为客户端使用客户端证书作为客户端
问题描述:
我需要编写Web服务并将其托管在Azure中。该服务反过来会消耗来自外部站点的另一项服务。因此,我的Azure托管服务是此外部托管服务的客户端。当我提出其他服务的请求时,我需要在我的请求中包含客户端证书。Azure Web服务作为客户端使用客户端证书作为客户端
有没有人成功做到这一点?是否可以在天青网络实例中安装证书?它会重新启动实例吗?如果是这样,指针将不胜感激。
我从来没有与客户端证书(甚至在“真实”客户端)工作,所以请原谅我,如果这是一个newbee问题。
答
将在该webrole的VM中提供上载到云服务中的证书(请参阅Azure门户中该云服务下的证书选项卡),该证书将托管您的webrole。因此,您可以从证书存储中访问它,并在进行外部Web服务调用时使用它。 在此计算器中发布了一个示例。 Accessing a web service and a HTTP interface using certificate authentication
答
您可以通过Azure管理门户添加证书,湛蓝将其添加到计算机证书存储,一旦它部署在虚拟机上的应用程序,或者你可以用你的应用程序保持,例如嵌入的资源和负载它手动并与您的web服务调用一起使用。就像这样:
private X509Certificate2 GetAuthCertificate()
{
var assembly = Assembly.GetExecutingAssembly();
Stream stream = null;
var resources = assembly.GetManifestResourceNames();
foreach (var resource in resources)
{
if (resource.EndsWith(certificateFilename))
{
stream = assembly.GetManifestResourceStream(resource);
break;
}
}
if (stream == null)
throw new Exception("Certificate not found in embedded rersources");
using (var ms = new MemoryStream())
{
stream.CopyTo(ms);
var result = new X509Certificate2(ms.ToArray(), "password", X509KeyStorageFlags.Exportable);
return result;
}
}
Checj此链接,看看是否有帮助:http://www.dib0.nl/code/367-using-a-client-certificate-with-an-ssl-stream-in- C –