Azure:获取服务证书而不定义其他配置

时间:2014-09-17 00:53:07

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

我的云服务具有以下配置:

<?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配置。是否有Azure API可以访问MyCert的指纹?或者也许是X509Certificate2实例本身(即无需使用X509Store搜索它)?

1 个答案:

答案 0 :(得分:2)

当然 - 如果您了解有关证书的其他信息,则可以使用X509FindType EnumerationsX509Certificate2Collection.Find Method中的任何一个。遗憾的是,ServiceConfiguration的“证书”部分用于在Cloud Service证书存储中查找证书,并在与要部署的角色关联的VM上安装该证书。没有API可以直接访问该部分。因此,您的选择是对证书主题名称或指纹进行硬编码,并希望它不会发生变化,或者添加您在代码示例中演示的设置,该设置可以在每个部署中进行配置。

ConfigurationSettings部分镜像web.config文件中的appSettings部分,当与CloudConfigurationManager.GetSetting(&#34; settingsKey&#34;)一起使用时,先查看ServiceConnfiguration,然后在web.config中查看应用程序设置,允许您在模拟器中取消本地或只是IIS表达并实现相同的功能。因此,我们在ServiceConfiguration和web.config中复制设置。