Как заставить Visual Studio публиковать приложение в кластере Service Fabric, защищенном общим именем сертификата вместо отпечатка пальца? - PullRequest
0 голосов
/ 02 октября 2018

Я выполнил задокументированные шаги здесь , чтобы преобразовать мой существующий шаблон ARM для использования параметра общего имени вместо отпечатка большого пальца.Развертывание прошло успешно, и я смог подключиться к Service Fabric Explorer с помощью моего браузера после обычного всплывающего окна выбора сертификата.Затем я попытался развернуть приложение в кластере так же, как раньше.Хотя я вижу URI конечной точки соединения кластера в диалоговом окне приложения VS Public Service Fabric, VS не удается подключиться к кластеру.Раньше я получал приглашение разрешить VS доступ к локальному сертификату.Кто-нибудь знает, как заставить VS развернуть приложение в настройке кластера сервисной фабрики, используя общее имя сертификата?

Извлекает из ссылки MS выше:

"virtualMachineProfile": {
  "extensionProfile": {
    "extensions": [`enter code here`
      {
        "name": "[concat('ServiceFabricNodeVmExt','_vmNodeType0Name')]",
        "properties": {
          "type": "ServiceFabricNode",
          "autoUpgradeMinorVersion": true,
          "protectedSettings": {
            "StorageAccountKey1": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key1]",
            "StorageAccountKey2": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('supportLogStorageAccountName')),'2015-05-01-preview').key2]"
          },
          "publisher": "Microsoft.Azure.ServiceFabric",
          "settings": {
            "clusterEndpoint": "[reference(parameters('clusterName')).clusterEndpoint]",
            "nodeTypeRef": "[variables('vmNodeType0Name')]",
            "dataPath": "D:\\SvcFab",
            "durabilityLevel": "Bronze",
            "enableParallelJobs": true,
            "nicPrefixOverride": "[variables('subnet0Prefix')]",
            "certificate": {
              "commonNames": [
                 "[parameters('certificateCommonName')]"
              ],
              "x509StoreName": "[parameters('certificateStoreValue')]"
            }
          },
          "typeHandlerVersion": "1.0"
        }
      },

и

{
    "apiVersion": "2018-02-01",
    "type": "Microsoft.ServiceFabric/clusters",
    "name": "[parameters('clusterName')]",
    "location": "[parameters('clusterLocation')]",
    "dependsOn": [
    "[concat('Microsoft.Storage/storageAccounts/', variables('supportLogStorageAccountName'))]"
    ],
    "properties": {
    "addonFeatures": [
        "DnsService",
        "RepairManager"
    ],        
    "certificateCommonNames": {
        "commonNames": [
        {
            "certificateCommonName": "[parameters('certificateCommonName')]",
            "certificateIssuerThumbprint": ""
        }
        ],
        "x509StoreName": "[parameters('certificateStoreValue')]"
    },
    ...

1 Ответ

0 голосов
/ 03 октября 2018

Я нашел решение для Visual Studio.Мне нужно было добавить / обновить файл PublishProfiles/Cloud.xml.Я заменил ServerCertThumbprint на ServerCommonName, а затем использовал сертификат CN для нового свойства и существующего свойства FindValue.Кроме того, я изменил свойство для FindType на FindBySubjectName.Теперь я могу успешно подключиться и опубликовать свое приложение в кластере.

<ClusterConnectionParameters 
    ConnectionEndpoint="sf-commonnametest-scus.southcentralus.cloudapp.azure.com:19000"
    X509Credential="true"
    ServerCommonName="sfrpe2eetest.southcentralus.cloudapp.azure.com"
    FindType="FindBySubjectName"
    FindValue="sfrpe2eetest.southcentralus.cloudapp.azure.com"
    StoreLocation="CurrentUser"
    StoreName="My" />

image

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...