【问题标题】:How can you get a certificate in code on Windows Azure如何在 Windows Azure 上获得代码证书
【发布时间】:2011-08-05 10:30:25
【问题描述】:

我正在尝试创建我们自己的 WIF 身份提供程序并在 Azure 上运行它,但在尝试自动生成联合元数据时遇到了困难。

此行似乎不适用于 Azure:

CertificateUtil.GetCertificate(StoreName.My, StoreLocation.LocalMachine, signingCertificateName);

证书已上传到 Azure,如何获取?

谢谢

【问题讨论】:

  • 如下图所示,内部代码和云端代码相同。我正在检查证书的名称,在 Azure 上它包含额外的信息,这就是我找不到它的原因。

标签: .net azure certificate x509certificate wif


【解决方案1】:

作为对其他答案的细微改动,如果您只想获得一个证书而不是遍历所有证书,您可以执行以下操作:

var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);

store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);

X509Certificate2Collection matchedCertificates =
     store.Certificates.Find(X509FindType.FindBySubjectName, signingCertificateName, true);

if (matchedCertificates.Count > 0)
{
    myCertificate = matchedCertificates[0]; 
}

(也不是 Azure 特有的)

【讨论】:

  • 非常好,尽管我将其他回复标记为答案,因为它突出了我的问题,但我已将代码重构为如下所示。谢谢! +1
  • 当前答案是什么,StoreLocation.LocalMachine 还是 StoreLocation.CurrentUser?我知道对于网络应用程序无法访问本地用户证书,所以它必须是本地机器,我错了吗?
  • 我只在 Azure 上使用过 LocalMachine,因为在那种情况下我发现用户的概念有点奇怪。
【解决方案2】:

试试这篇博文: http://blogs.msdn.com/b/jnak/archive/2010/01/29/installing-certificates-in-windows-azure-vms.aspx

它建议的代码如下:

X509Certificate2Collection selectedCerts = new X509Certificate2Collection();

X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly);
foreach (X509Certificate2 cert in store.Certificates)
{
    // do stuff with cert
}

【讨论】:

  • 这个 sn-p 让我看到 Azure 上的证书名称与我的预期不同,并解决了我的问题 :)
猜你喜欢
  • 2011-06-07
  • 2015-04-30
  • 2014-06-03
  • 2016-06-20
  • 1970-01-01
  • 2013-08-20
  • 2018-05-19
  • 2017-06-29
  • 1970-01-01
相关资源
最近更新 更多