首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以在资源管理器部署过程中创建证书并将其部署到Azure密钥库?

是否可以在资源管理器部署过程中创建证书并将其部署到Azure密钥库?
EN

Stack Overflow用户
提问于 2016-10-23 22:54:20
回答 2查看 1.1K关注 0票数 2

我正在尝试从Octopus Deploy在自动化过程中部署Azure Service Fabric Cluster。部署新集群的过程的一部分涉及创建Azure密钥库,并使用特定于该集群的证书和其他秘密填充它。

我有一个ARM模板来部署Key Vault,另一个模板来部署集群。我发现秘密(通常)可以作为ARM模板的一部分部署到Azure密钥库,但还没有找到任何关于当秘密是证书时如何做到这一点的信息。理想情况下,我希望创建特定于群集的证书并将其部署到Key Vault,作为该部署的一部分,以便可以在群集部署期间访问这些证书,但只需在配置Key Vault时部署证书就足够了。

EN

回答 2

Stack Overflow用户

发布于 2016-10-25 01:19:20

SF部署中使用的证书实际上是填充在KeyVault中的秘密中的base64编码证书。因此,如果您希望在SF部署中使用它们,那么您实际上应该创建一个秘密资源,而不是证书资源。

因此,听起来您已经拥有了所需的一切-只需在设置密钥库时将base64编码的blob放入秘密值。

有帮助吗?

票数 1
EN

Stack Overflow用户

发布于 2016-10-24 23:58:14

将证书从密钥库部署到虚拟机需要存储为特定的json文档,我没有在ARM模板中这样做,但在Powershell中我使用了以下内容:

代码语言:javascript
运行
复制
 $cert = Get-Content $certLocation -Encoding Byte;
    $cert = [System.Convert]::ToBase64String($cert);

    $json = @"
    {
        "data" : "$cert",
        "dataType": "pfx",
        "password": "$password"
    } 
"@

    $package = [System.Text.Encoding]::UTF8.GetBytes($json);
    $package = [System.Convert]::ToBase64String($package);
    $secret = ConvertTo-SecureString -String $package -AsPlainText -Force;

从理论上讲,如果您可以这样做,然后将$secret值注入ARM模板中,那么您应该能够实现您想要做的事情。

请记住,此时的$password是计划文本,而不是安全字符串,因此Azure Compute可以使用它来安装证书。

然后,在集群ARM模板中,您可以在VMSS操作系统配置文件中引用证书和密钥库:

代码语言:javascript
运行
复制
 "osProfile": {
            "adminUsername": "[parameters('adminUsername')]",
            "adminPassword": "[parameters('adminPassword')]",
            "computernamePrefix": "[parameters('vmNodeType0Name')]",
            "secrets": [
                            {
                                "sourceVault": {
                                    "id": "[parameters('sourceVault')]"
                                },
                                "vaultCertificates": [
                                    {
                                        "certificateStore": "My",
                                        "certificateUrl": "[parameters('clusterCertificateUrl')]"
                                    },
                                    {
                                        "certificateStore": "My",
                                        "certificateUrl": "[parameters('adminCertificateUrl')]"
                                    }
                                ]
                            }
                        ]
          }

然后在同一个ARM模板中的Service Fabric Resource属性下引用您想要使用的特定证书。

代码语言:javascript
运行
复制
"certificate": {
    "thumbprint": "[parameters('clusterCertificateThumbPrint')]",
    "x509StoreName": "My"
},
"clientCertificateCommonNames": [],
"clientCertificateThumbprints": [{
    "CertificateThumbprint": "[parameters('adminCertificateThumbPrint')]",
    "IsAdmin": true
}],

如果有用,这里是我在github上尝试的link

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40204302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档