Azure Web服务作为外部服务的客户端,使用客户端证书

时间:2014-06-26 21:09:09

标签: web-services azure ssl

我需要编写一个Web服务并在Azure中托管它。此服务反过来从外部站点消耗另一项服务。因此,我的azure托管服务是此外部托管服务的客户端。当我提出其他服务的请求时,我需要在我的请求中包含客户端证书。

有人成功完成了吗?是否可以在Azure中的Web实例中安装证书?它会在实例重启后继续存在吗?如果是这样,我们将不胜感激。

我从未使用过客户端证书(即使是在“真正的”客户端),所以如果这是一个新问题,请原谅我。

2 个答案:

答案 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;
        }
    }