【问题标题】:how to connect to azure (management) rest api via C# in IIS如何在 IIS 中通过 C# 连接到 azure(管理)rest api
【发布时间】:2014-05-12 16:03:23
【问题描述】:

我正在尝试设置一个网站(本地测试 atm),以连接到 azure rest api 以查看我们的设置。我在本地创建了一个证书(W7 机器):

makecert -sky exchange -r -n "CN=azureConnectionNew" -pe -a sha1 -len 2048 -ss My "azureConnectionNew.cer"

我可以在证书 MMC 管理单元中看到证书。(当我在此处查看证书时,没有右键单击编辑权限选项)。

我有一个建立连接的类库,通过获取证书(通过拇指字符串)传入证书,这对控制台应用程序非常有用,但是当我尝试在网络应用程序中执行此操作时一切都出错了。我收到 403 错误。

我首先认为这是由于该网站作为 ApplicationPoolIdentity 运行,因此无法访问证书。所以我尝试通过加载实际文件来传递证书(与控制台应用程序相同的代码):

var path = @"C:\temp\azureconnection\azureConnectionNew.cer";
var cert = new X509Certificate2();
cert.Import(path);

我仍然收到 403 错误。

我尝试将 cer 文件从 MMC 证书管理单元导出为 pfx 文件(包括私钥)。我将本地 IIS 集设置为使用此证书并导航到本地站点的 https 版本,但仍然得到 403。

我不确定如何包含/设置/引用证书,以便 IIS 可以将 HttpWebRequest 从服务器端发送到 Azure 并获得有效响应。

【问题讨论】:

    标签: azure x509certificate


    【解决方案1】:

    最好使用证书的指纹来获取证书。请确保您已正确创建证书。另请检查您是否已将证书放置在本地计算机的个人证书部分。您可以使用 MMC snap in 进行检查。请尝试以下代码..

    var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);  
               store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly);
    
               var certificate = store.Certificates
                 .Cast<X509Certificate2>()
                 .SingleOrDefault(c => string.Equals(c.Thumbprint, “CertificateThumbprint”, StringComparison.OrdinalIgnoreCase));  // please replace CertificateThumbprint with original Thumbprint
    

    【讨论】:

      【解决方案2】:

      这不是使用证书的正确方法 - 它需要存储在运行代码的用户的个人/证书存储中(您应该将 App Pool 身份更新为可以登录并进入其您导入证书的证书。这里的示例代码向您展示如何使用服务 API:http://code.msdn.microsoft.com/windowsazure/CSAzureManagementAPI-609fc31a/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多