azure - 如何通过 Azure 上的 ServiceDefinition 中给出的名称获取证书

标签 azure

<Certificates>
  <Certificate name="MyRandomName" storeLocation="LocalMachine" storeName="My" />
</Certificates>

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

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

最佳答案

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

我可以解密这样的设置:

  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 中获取他们的云服务,并将其上传到 ofcause 门户上。

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

关于azure - 如何通过 Azure 上的 ServiceDefinition 中给出的名称获取证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18652778/

相关文章:

azure - 测试 Azure 死信服务总线队列

azure - CAS azure saml2 即时身份验证问题太旧或将来

sql-server - Azure SQL DW COPY 命令失败并出现语法错误

从 API 调用 Microsoft Graph 时 Azure AD B2C 重置密码选项

c# - 需要从 ASP.NET Core 动态在 Azure DNS 中创建子域

json - Azure 数据工厂复制事件

node.js - 如何在 Node 中使用 Azure 托管服务标识访问 Key Vault?

azure - 是否可以使用现有存储帐户来创建 Databricks 工作区?

c# - 由于 Microsoft 教程中的代码中的保护级别错误而无法访问

sql - Azure 逻辑应用 - 将 SQL 表发送到单个电子邮件 - 操作方法