【问题标题】:How can I get a certificate by name given in ServiceDefinition on Azure如何通过 Azure 上的 ServiceDefinition 中给出的名称获取证书
【发布时间】:2013-09-07 23:21:41
【问题描述】:
<Certificates>
  <Certificate name="MyRandomName" storeLocation="LocalMachine" storeName="My" />
</Certificates>

当我的 ServiceDefinition.csdef 中有上述内容时。这是证书在服务器上获得的名称“MyRandomName”吗?

它如何在 OnStart 调用中获得它的 X509Certificate2 实例?是否需要我有一个设置也告诉指纹查找它?

【问题讨论】:

  • 在 ServiceDef&Config 文件中声明证书信息允许您访问安装在本地计算机中的证书。您应该在 web.config 和 app.config 中进行适当的输入以通过指纹访问它
  • 我的目标是不要输入两次。用户已经在 cscfg 中添加了 - 所以必须有某种方法可以从代码中获取此证书,而无需用户也将其放入 app.config 中。 (它是一个角色部署。用户只需编辑 cscfg 并部署包)。
  • 我同意@pksorensen,没有必要重复信息。我真的很想按名称访问证书,或者至少按名称访问证书指纹,以便以后获得证书。这个问题真的很好,但是我不喜欢答案,应该更优雅:(
  • 我现在使用 Azure Keyvault 将证书存储为机密。效果很好

标签: azure


【解决方案1】:

我找到了另一个解决我的问题的方法:

我可以解密这样的设置:

  var encryptedBytes = Convert.FromBase64String(setting);
  var envelope = new EnvelopedCms();
  envelope.Decode(encryptedBytes);
  var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
  store.Open(OpenFlags.ReadOnly);
  envelope.Decrypt(store.Certificates);
  string passwordChars = Encoding.UTF8.GetString(envelope.ContentInfo.Content);

当它被这样加密时:

        X509Certificate2 cert = LoadCertificate(
            System.Security.Cryptography.X509Certificates.StoreName.My,
            System.Security.Cryptography.X509Certificates.StoreLocation.CurrentUser, args[0]);

        byte[] encoded = System.Text.UTF8Encoding.UTF8.GetBytes(args[1]);
        var content = new ContentInfo(encoded);
        var env = new EnvelopedCms(content);
        env.Encrypt(new CmsRecipient(cert));

        string encrypted64 = Convert.ToBase64String(env.Encode());

这意味着用户不必添加除

之外的任何指纹
<Certificates>
  <Certificate name="Composite.WindowsAzure.Management" thumbprint="3D3275357F9DADDDF31F7597656B42137BBBCD56" thumbprintAlgorithm="sha1" />
</Certificates>

在他们的云服务的 cscfg 中,并将其上传到门户网站上。

args[0] 和 args[1] 只是要使用的证书的指纹和要加密的设置值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2019-11-12
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多