5

Мне нужно установить сертификат в кластере Service Fabric, который я создал с использованием шаблона ARM. Я был в состоянии установить сертификат с закрытым ключом, используя следующую команду помощника Powershell:Установить сертификат в кластере службы Fabric без закрытого ключа

> Invoke-AddCertToKeyVault 

https://github.com/ChackDan/Service-Fabric/tree/master/Scripts/ServiceFabricRPHelpers

После этого сертификата в Azure Key Vault Я могу изменить шаблон ARM, чтобы установить сертификат автоматически узлы в кластере:

"osProfile": { 
    "secrets": [ 
     { 
      "sourceVault": { 
       "id": "[parameters('vaultId')]" 
      }, 
      "vaultCertificates": [ 
       { 
        "certificateStore": "My", 
        "certificateUrl": "https://mykeyvault.vault.azure.net:443/secrets/fabrikam/9d1adf93371732434" 
       } 
      ]   
     } 
    ] 
} 

проблема в том, что Invoke-AddCertToKeyVault ожидает меня предоставить файл PFX при условии, у меня есть секретный ключ.

Скрипт создает следующий JSON блоб:

$jsonBlob = @{ 
    data = $base64 
    dataType = 'pfx' 
    password = $Password 
} | ConvertTo-Json 

Я изменил сценарий для удаления пароля и изменения DATATYPE к «КВЖД», но когда я развернула шаблон в лазури не сказал DATATYPE больше не действительна ,

Как я могу развернуть сертификат кластера кластера службы, который не включает закрытый ключ?

ответ

3

1) SF на самом деле все равно, если вы использовали .cer или .pfx. Все потребности SF в том, что сертификат доступен в локальном хранилище сертификатов в виртуальной машине.

2) Проблема, с которой вы сталкиваетесь, заключается в том, что агент CRP, который устанавливает сертификат из ключа в локальный хранилище сертификатов в виртуальной машине, поддерживает только .pfx сегодня.

Так что теперь у вас есть два варианта

1) создать файл PFX без секретного ключа и использовать его

Вот как это сделать с помощью C# (или PowerShell) Загрузите сертификат в объект X509Certificate2 Затем используйте метод экспорта для X509ContentType = PFX https://msdn.microsoft.com/en-us/library/24ww6yzk(v=vs.110).aspx

2) Развертывание .cer с помощью пользовательского расширения VM. Поскольку .cer является только сертификатом открытого ключа, не должно быть требований конфиденциальности. Вы можете просто загрузить сертификат в blob, а также загрузить собственное расширение скрипта и установить его на компьютере.