azure - 如何在 IIS 中通过 C# 连接到 azure(管理)rest api

标签 azure x509certificate

我正在尝试设置一个网站(本地测试 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 可以从服务器端向 Azure 发送 HttpWebRequest 并获得有效响应。

最佳答案

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

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

关于azure - 如何在 IIS 中通过 C# 连接到 azure(管理)rest api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23613737/

相关文章:

azure - 从空窗口生成输出

windows - Azure 部署 - 如何添加程序集?

azure - 如何加密和解密Azure存储访问 key

azure - 交换槽中的名称在 azure 中显示阶段和生产的相同名称

java - 使用 okhttpchannelbuilder 相互身份验证 grpc-java tls 客户端到远程主机的问题

java - 如何使用 Jersey/Spring 获取 pki 证书?

c# - 证书吊销列表 c#

x509certificate - CertGetCertificateChain 什么时候可以返回多个简单的证书链?

android - java.security.cert.CertificateException : java. security.cert.CertPathValidatorException:找不到证书路径的信任 anchor

azure - 是否需要调整服务结构负载均衡器?