【问题标题】:Azure: getting service certificate without defining an additional configurationAzure:在不定义额外配置的情况下获取服务证书
【发布时间】:2014-09-18 00:07:50
【问题描述】:

我的云服务有以下配置:

<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration ...>
  <Role name="...">
    <ConfigurationSettings>
      <Setting name="MyCertThumbprint" value="AB687DC9F63D51AE6E9522B86B97EFD15F55EA42" />
    </ConfigurationSettings>
    <Certificates>
      <Certificate name="MyCert" thumbprint="AB687DC9F63D51AE6E9522B86B97EFD15F55EA42" thumbprintAlgorithm="sha1" />
    </Certificates>
  </Role>
</ServiceConfiguration>

看到冗余了吗?

我想摆脱 MyCertThumbprint 配置。是否有可让我访问 MyCert 指纹的 Azure API?或者可能是 X509Certificate2 实例本身(即无需使用 X509Store 搜索它)?

【问题讨论】:

  • API 很有帮助,但获取服务证书方法仍然需要预先了解证书详细信息才能从云服务存储中获取指纹。商店中很少有单个证书:RDP 添加证书,远程调试添加证书,域 SSL 证书通常添加授权链证书。

标签: c# .net azure x509certificate azure-cloud-services


【解决方案1】:

当然 - 如果您知道有关证书的其他信息,您可以使用 X509FindType Enumerations 和 X509Certificate2Collection.Find Method 中的任何一个。不幸的是,ServiceConfiguration 的证书部分用于在云服务证书存储中查找证书并将该证书安装在与您正在部署的角色关联的 VM 上。没有 API 可以直接访问该部分。因此,您的选择是对证书主题名称或指纹之类的内容进行硬编码,并希望它不会更改,或者添加您在代码示例中演示的设置,该设置可在每次部署时进行配置。

ConfigurationSettings 部分反映了 web.config 文件中的 appSettings 部分,当与 CloudConfigurationManager.GetSetting("settingsKey") 结合使用时,首先在 ServiceConfiguration 中查看,然后在 web.config 中查看应用程序设置,允许您取消在模拟器中本地或只是 IIS 表达并实现相同的功能。所以我们复制 ServiceConfiguration 和 web.config 中的设置。

【讨论】:

  • 我将此答案解释为“你不能做你想做的事”。
  • fernacolo,虽然我同意您的观点,但请记住您需要使用密钥检索设置。您可以使用 Certificate.name 作为密钥。在我的公司,我们有一个服务使用的所有设置的接口。对于 azure 部署,具体类查看设置部分。对于端点,它同样会查看端点部分和证书。
猜你喜欢
  • 2015-10-30
  • 2017-07-03
  • 1970-01-01
  • 1970-01-01
  • 2012-07-17
  • 1970-01-01
  • 1970-01-01
  • 2011-11-06
  • 2019-05-01
相关资源
最近更新 更多