Azure Service Fabric,KeyVault,SSL证书

时间:2017-02-11 00:50:11

标签: azure-service-fabric azure-keyvault

我想用我已部署到集群的证书(即它存在于Cert:\ LocalMachine \ My中)来保护我自己的HTTPS端点(node.js express.js服务器)。

我当然希望避免在源代码管理中使用我的证书。我无法在ServiceManifest中使用EndpointBindingPolicy,因为据我所知,这仅适用于基于http.sys(?)的系统,这不是。

我的想法可能是运行SetupEntryPoint脚本:

  1. 从商店获取证书
  2. 使用随机密码(或某种适当的格式)将其导出为pfx
  3. 将其复制到{pkgroot} /certs/ssl_cert.pfx
  4. 使用随机密码
  5. 替换serverinit.js中的某种令牌

    这样服务器,呃,代码库不需要证书存在,我只需要相信它会在服务运行时存在。

    但是我不认为我可以这样做,如果它甚至 是明智的想法,因为商店中的证书被标记为私钥是不可导出的!或者,至少,他们是我的RDP帐户!

    有没有办法使用私钥导出证书?

    我有什么选择?

    我最终编写了一个在我的发布管道中运行的powershell脚本,参数是clientID,clientSecret和certificateName。 clientSecret存储为我的代理的受保护环境变量。

    1. 在与KeyVault相同的订阅下创建新的应用程序注册(应与SF Cluster相同)(例如在portal.azure.com中)
    2. 记下应用ID
    3. 创建app secret
    4. 使用App作为主体修改KeyVault ACL,仅在机密上设置get
    5. 使用带有客户端ID和秘密https://docs.microsoft.com/en-us/rest/api/keyvault/getsecret
    6. 的REST api

      例如,我选择了这个,而不是在SetupEntryPoint中获取证书,因为这可以更好地从开放世界中隐藏客户端秘密(例如,不应该/不需要访问它的开发人员)

0 个答案:

没有答案