Service Fabric中每个环境的不同端点证书

时间:2017-02-08 17:40:16

标签: azure-service-fabric

我有一个公开SSL端点的服务结构应用程序。我想根据环境使用不同的证书。我正在尝试使用ApplicationMainfest.xml文件中的参数执行此操作,方法与指定其他内容(例如实例计数)的方式相同。但是,参数似乎不适用于此。我想知道这是否真的如此,如果有某些事情你无法参数化。另外,有没有办法根据环境指定不同的证书?

以下是我的申请清单中的相关内容:

    <Parameter Name="CERTNAME" DefaultValue="MyCert" />
    ...
     <Certificates>
        <EndpointCertificate X509FindValue="..." Name="MyCert" />
        <EndpointCertificate X509FindValue="..." Name="SVSSL" />
      </Certificates>

 <Policies>
      <EndpointBindingPolicy EndpointRef="ServiceEndpointHttps" CertificateRef="[CERTNAME]" />
    </Policies>

在部署时,我收到以下错误: Register-ServiceFabricApplicationType:EndpointBindingPolicy中的CertificateRef'[CERTNAME]'无效。相应的ApplicationManifest中没有匹配的证书。

1 个答案:

答案 0 :(得分:4)

今天证书价值本身是可参数化的,但不是参考。因此,不是更改引用或名称,而是参数化X509FindValue并保持endpointbindingpolicy相同。

作为一个注释,只要你遇到想要参数化的东西,但无法弄清楚如何去做,有几个选择。例如,考虑Service Manifest中的大多数内容,例如服务侦听的端口(如果您静态配置它)。还有其他一些方法:

  1. 创建不同的清单(服务清单或应用程序清单)并在为给定环境创建应用程序包时替换它们
  2. 在构建/部署阶段(例如VSTS中的Tokenizer Task)中使用某些内容,将stub值替换为给定正在为其创建包的环境的实际值
  3. 将大多数端点配置内容移至settings.xml,并通过正常的应用程序参数/覆盖行为替换这些值。但这意味着要承担自己配置端点的工作。