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

Different Endpoint Certificates Per Environment in 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中没有匹配的Certificate。

今天,证书值本身是可参数化的,但 Ref.因此,您无需更改引用或名称,而是参数化 X509FindValue 并保持端点绑定策略相同。

请注意,任何时候您 运行 进入您想要参数化但无法弄清楚如何去做的东西时,有几个选项。例如,考虑服务清单中的大多数内容,例如服务侦听的端口(如果您已对其进行静态配置)。还有其他一些解决方法:

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