我需要编写一个Web服务并在Azure中托管它。此服务反过来从外部站点消耗另一项服务。因此,我的azure托管服务是此外部托管服务的客户端。当我提出其他服务的请求时,我需要在我的请求中包含客户端证书。
有人成功完成了吗?是否可以在Azure中的Web实例中安装证书?它会在实例重启后继续存在吗?如果是这样,我们将不胜感激。
我从未使用过客户端证书(即使是在“真正的”客户端),所以如果这是一个新问题,请原谅我。
答案 0 :(得分:0)
将在该webrole的VM中提供在云服务中上载的证书(请参阅azure门户中该云服务下的证书选项卡),该证书将托管您的webrole。因此,您可以从证书存储区访问它,并在进行外部Web服务调用时使用它。 此stackoverflow帖子中给出了一个示例。 Accessing a web service and a HTTP interface using certificate authentication
答案 1 :(得分:0)
您可以通过azure管理门户添加证书,azure会在VM上部署您的应用程序后将其添加到计算机证书存储中,或者您可以将其与应用程序保持在一起,例如作为嵌入式资源并手动加载它与您的网络服务电话一起使用。像这样:
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;
}
}