5

Potrzebuję zainstalować certyfikat w klastrze usług usługowych utworzonym przy użyciu szablonu ARM. Udało mi się zainstalować certyfikat z kluczem prywatnym za pomocą następującego polecenia pomocnika powershell:Instalowanie certyfikatu w klastrze usług usługowych bez klucza prywatnego

> Invoke-AddCertToKeyVault 

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

Kiedy certyfikat jest w Azure Key Vault mogę zmodyfikować mój szablon ARM zainstalować certyfikat automatycznie węzły w klastrze:

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

Problem polega na tym, że Invoke-AddCertToKeyVault spodziewa mi dostarczyć plik pfx zakładając mam klucza prywatnego.

Skrypt tworzy następujące JSON blob:

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

zmodyfikowałem skrypt usunąć hasło i zmienić typ danych do „cer”, ale kiedy wdrożony szablon w Azure to powiedział dataType już nie było ważne .

Jak wdrożyć certyfikat w klastrze usług usługowych, który nie zawiera klucza prywatnego?

Odpowiedz

3

1) SF naprawdę nie obchodzi, czy użyłeś .cer lub .pfx. Wszystkie potrzeby SF są takie, aby certyfikat był dostępny w lokalnym magazynie certyfikatów w VM.

2) Problem, który napotykasz, polega na tym, że agent CRP, który instaluje certyfikat z keyvault do lokalnego magazynu certyfikatów w VM, obsługuje dzisiaj tylko .pfx.

Więc teraz masz dwie opcje

1) Utwórz plik pfx bez klucza prywatnego i używać go

Oto jak to zrobić za pośrednictwem C# (lub PowerShell) Załaduj certyfikat do obiektu X509Certificate2 Następnie użyj metody eksportu dla X509ContentType = Pfx https://msdn.microsoft.com/en-us/library/24ww6yzk(v=vs.110).aspx

2) Wdróż plik .cer, używając niestandardowego rozszerzenia maszyny wirtualnej. Ponieważ .cer jest tylko certyfikatem klucza publicznego, nie powinno być żadnych wymagań dotyczących prywatności. Możesz po prostu przesłać certyfikat do obiektu blob i mieć niestandardowe rozszerzenie skryptu, pobrać je i zainstalować na komputerze.