c# - 使用来自 Azure 网站实例的客户端证书

标签 c# wcf azure azure-web-app-service

我有一个 Azure 网站实例,需要连接输出到在其他地方运行且使用客户端证书保护的 WCF 服务。

客户端 -> Azure 网站(MVC Controller ) -> 需要客户端证书的 WCF 服务(不是 Azure)

我已获得一个 CER 文件,在本地安装时,该文件允许我的网站连接到 WCF 服务。如何在 Azure 网站上安装/提供此证书?

我在研究此问题时找到的所有文档都是关于在 Azure 中运行时保护 WCF 服务的安全,并且需要安装带有密码的 PFX 文件。我正在尝试执行相反的操作,将 Azure 网站的出站连接到第三方 WCF 服务。

最佳答案

来自: https://azure.microsoft.com/en-us/blog/using-certificates-in-azure-websites-applications/

添加以下应用程序设置:

  • 应用设置名称:WEBSITE_LOAD_CERTIFICATES
  • 值:*{CERT_THUMBPRINT}

然后您可以从我的商店获取证书:

X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
certStore.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certCollection = certStore.Certificates.Find(
                                 X509FindType.FindByThumbprint,
                                 // Replace below with yourcert's thumbprint
                                 "E661583E8FABEF4C0BEF694CBC41C28FB81CD870”,
                                 false);

现在,我认为您无法上传 .cer
.pfx 似乎是应用服务中唯一接受的格式。

error_uploading_cer

或者如果无需担心私钥,则只需从磁盘加载它。 这也可以让您加载 .cer (DER 可以工作,也可能是 Base64):

// The path to the certificate.
string Certificate = @"d:\home\site\cert.cer";

// Load the certificate into an X509Certificate object.
X509Certificate cert = X509Certificate.CreateFromCertFile(Certificate);

// Print to console
string result = cert.ToString(true);
Console.WriteLine(result);

在应用服务中工作得很好(这里它在 Kudu console 中运行):

loadCert_Kudu_screenshot

关于c# - 使用来自 Azure 网站实例的客户端证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41065150/

相关文章:

c# - 将负值转换为 0

c# - 如何访问匿名对象的属性

DocumentDB 的 Node.js 代理服务

Azure 存储帐户防火墙 AnonymousIpAuthorizationError

c# - 当文本框的背景在 wpf 中为灰色时插入符消失

c# - 确保使用 ssl 调用操作?

c# - 是什么让 WCF 测试客户端出现在 WCF > WCF 服务应用程序而不是 ASP.NET Web 应用程序项目中?

c# - WCF-在ASP.NET应用程序中具有多个.svc服务

c# - WCF 服务 - 如何保护只有我的客户才能使用它?

rest - 通过 RESTful API 将新的/更新的应用程序版本部署到 Azure Batch 服务?