Настройка VPN типа "точка — сеть" (P2S) в Windows для использования с Файлы Azure

Vpn-подключение типа "точка — сеть" (P2S) можно использовать для подключения общих папок Azure через S МБ извне Azure без открытия порта 445. VPN-подключение типа "точка — сеть" — это VPN-подключение между Azure и отдельным клиентом. Чтобы использовать VPN-подключение P2S с Файлы Azure, необходимо настроить VPN-подключение для каждого клиента, который хочет подключиться. Если у вас есть множество клиентов, которые должны подключаться к общим папкам Azure из локальной сети, вы можете использовать VPN-подключение типа "сеть — сеть" (S2S) вместо подключения типа "точка — сеть" для каждого клиента. Дополнительные сведения см. в статье "Настройка VPN типа "сеть — сеть" для использования с Файлы Azure.

Настоятельно рекомендуется ознакомиться с рекомендациями по работе с сетями для прямого доступа к общей папке Azure, прежде чем продолжить работу с этой статьей, чтобы ознакомиться с полным обсуждением параметров сети, доступных для Файлы Azure.

В статье описаны действия по настройке VPN типа "точка — сеть" в Windows (клиент Windows и Windows Server) для подключения общих папок Azure непосредственно в локальной среде. Если вы хотите маршрутизировать трафик Синхронизация файлов Azure через VPN, ознакомьтесь с настройкой параметров прокси-сервера и брандмауэра Синхронизация файлов Azure.

Применяется к

Тип общей папки SMB NFS
Стандартные общие папки (GPv2), LRS/ZRS Yes No
Стандартные общие папки (GPv2), GRS/GZRS Yes No
Общие папки уровня "Премиум" (FileStorage), LRS/ZRS Yes No

Необходимые компоненты

  • Последняя версия модуля Azure PowerShell. См. статью Установка модуля Azure PowerShell.

  • Общая папка Azure, которую вы хотите подключить локально. Общие папки Azure развертываются в учетных записях хранения, которые представляют собой общий пул хранилища, в котором можно развернуть несколько общих папок, а также другие ресурсы хранилища. Дополнительные сведения о развертывании общих папок Azure и учетных записей хранения см. в разделе "Создание общей папки Azure".

  • Виртуальная сеть с частной конечной точкой для учетной записи хранения, содержащей общую папку Azure, которую требуется подключить локально. Сведения о создании частной конечной точки см. в статье "Настройка Файлы Azure сетевых конечных точек".

  • Необходимо создать подсеть шлюза в виртуальной сети. Чтобы создать подсеть шлюза, войдите в портал Azure, перейдите к виртуальной сети, выберите Параметры > подсети и выберите +Подсеть шлюза. При создании подсети шлюза указывается количество IP-адресов, которое содержит подсеть. Необходимое количество IP-адресов зависит от конфигурации VPN-шлюза, который вы хотите создать. Рекомендуется указать /27 или больше (/26, /25 и т. д.), чтобы разрешить достаточно IP-адресов для будущих изменений, таких как добавление шлюза ExpressRoute.

Сбор сведений о среде

Перед настройкой VPN типа "точка — сеть" необходимо собрать некоторые сведения о вашей среде.

Чтобы настроить VPN типа "точка — сеть" с помощью портал Azure, необходимо знать имя группы ресурсов, имя виртуальной сети, имя подсети шлюза и имя учетной записи хранения.

Создание корневого сертификата для проверки подлинности VPN

Чтобы VPN-подключения с локальных компьютеров Windows прошли проверку подлинности для доступа к виртуальной сети, необходимо создать два сертификата:

  1. Корневой сертификат, который будет предоставлен шлюзу виртуальных машин
  2. Сертификат клиента, который будет подписан корневым сертификатом

Вы можете использовать корневой сертификат, созданный с помощью корпоративного решения, или создать самозаверяющий сертификат. Если вы используете корпоративное решение, получите файл .cer для корневого сертификата из ИТ-организации.

Если вы не используете решение корпоративного сертификата, создайте самозаверяющий корневой сертификат с помощью этого скрипта PowerShell. После развертывания шлюза виртуальной сети вы создадите сертификат клиента. Если это возможно, оставьте сеанс PowerShell открытым, чтобы не нужно переопределить переменные при создании сертификата клиента далее в этой статье.

Важно!

Запустите этот сценарий PowerShell от имени администратора на локальном компьютере под управлением Windows 10/Windows Server 2016 или более поздней версии. Не запускайте скрипт из Cloud Shell или виртуальной машины в Azure.

$rootcertname                = 'CN=P2SRootCert'
$certLocation                = 'Cert:\CurrentUser\My'
$vpnTemp                     = 'C:\vpn-temp'
$exportedencodedrootcertpath = "$vpnTemp\P2SRootCertencoded.cer"
$exportedrootcertpath        = "$vpnTemp\P2SRootCert.cer"

if (-Not (Test-Path -Path $vpnTemp -PathType Container)) {
    New-Item -ItemType Directory -Force -Path $vpnTemp | Out-Null
}

if ($PSVersionTable.PSVersion.Major -ge 6) {
    Import-Module -Name PKI -UseWindowsPowerShell
}

$selfSignedCertParams = @{
    Type              = 'Custom'
    KeySpec           = 'Signature'
    Subject           = $rootcertname
    KeyExportPolicy   = 'Exportable'
    HashAlgorithm     = 'sha256'
    KeyLength         = '2048'
    CertStoreLocation = $certLocation
    KeyUsageProperty  = 'Sign'
    KeyUsage          = 'CertSign'
}
$rootcert = New-SelfSignedCertificate @selfSignedCertParams

Export-Certificate -Cert $rootcert -FilePath $exportedencodedrootcertpath -NoClobber | Out-Null

certutil -encode $exportedencodedrootcertpath $exportedrootcertpath | Out-Null

$rawRootCertificate = Get-Content -Path $exportedrootcertpath

$rootCertificate = ''

foreach ($line in $rawRootCertificate) { 
    if ($line -notlike '*Certificate*') { 
        $rootCertificate += $line 
    } 
}

Развертывание шлюза виртуальной сети

Шлюз виртуальной сети — это служба, к которой будут подключаться ваши локальные компьютеры Windows. Если вы еще не сделали этого, необходимо создать подсеть шлюза в виртуальной сети перед развертыванием шлюза виртуальной сети.

Для развертывания шлюза виртуальной сети требуется два основных компонента:

  1. Общедоступный IP-адрес, который будет определять шлюз для клиентов, где бы они ни находились в мире
  2. Корневой сертификат, созданный на предыдущем шаге, который будет использоваться для проверки подлинности клиентов

Для развертывания шлюза виртуальной сети можно использовать портал Azure или Azure PowerShell. Развертывание может занять до 45 минут.

Чтобы развернуть шлюз виртуальной сети с помощью портал Azure, выполните следующие инструкции.

  1. Войдите на портал Azure.

  2. В разделе "Поиск ресурсов, служб и документов" введите шлюзы виртуальной сети. Найдите шлюзы виртуальной сети в результатах поиска Marketplace и выберите его.

  3. Нажмите кнопку "+ Создать ", чтобы создать шлюз виртуальной сети.

  4. На вкладке Основные введите значения в полях Сведения о проекте и Сведения об экземпляре.

    Screenshot showing how to create a virtual network gateway using the Azure portal.

    • Подписка. В раскрывающемся списке выберите нужную подписку.
    • Группа ресурсов. Этот параметр заполняется автоматически при выборе виртуальной сети на этой странице.
    • Имя. Назовите свой шлюз. Имя шлюза должно отличаться от имени подсети шлюза. Это имя объекта шлюза, который вы создаете.
    • Регион. Выберите регион, в котором требуется создать ресурс. Шлюз должен находиться в том же регионе, где и виртуальная сеть.
    • Тип шлюза. Выберите VPN. VPN-шлюзы используют тип шлюза виртуальной сети VPN.
    • SKU. Выберите номер SKU шлюза, поддерживающий функции, которые вы хотите использовать в раскрывающемся списке. См . номера SKU шлюза. Не используйте номер SKU "Базовый", так как он не поддерживает проверку подлинности IKEv2.
    • Поколение. Выберите поколение, которое необходимо использовать. Рекомендуется использовать номер SKU поколения 2. Дополнительные сведения см. в разделе о номерах SKU шлюзов.
    • Виртуальная сеть. В раскрывающемся списке выберите виртуальную сеть, в которую будет добавлен этот шлюз. Если вы не видите виртуальную сеть, для которой вы хотите создать шлюз, убедитесь, что выбрана правильная подписка и регион.
    • Подсеть: это поле должно быть серым и вывести имя созданной подсети шлюза, а также диапазон IP-адресов. Если вместо этого отображается поле диапазона адресов подсети шлюза с текстовым полем, то вы еще не настроили подсеть шлюза (см . предварительные требования.)
  5. Укажите значения общедоступного IP-адреса , связанного с шлюзом виртуальной сети. Общедоступный IP-адрес назначается этому объекту при создании шлюза виртуальной сети. Единственное время изменения основного общедоступного IP-адреса — при удалении и повторном создании шлюза. Он не изменяется при изменении размера, сбросе или других внутренних обновлениях и обслуживании.

    Screenshot showing how to specify the public IP address for a virtual network gateway using the Azure portal.

    • Общедоступный IP-адрес. Оставьте выбранный параметр Создать новый.
    • Имя общедоступного IP-адреса. В текстовом поле укажите имя общедоступного IP-адреса.
    • Номер SKU общедоступного IP-адреса: параметр выбирается автоматически.
    • Назначение: назначение обычно выбирается автоматически и может быть динамическим или статическим.
    • Включение активно-активного режима: выберите "Отключено". Включите этот параметр только в том случае, если вы создаете конфигурацию шлюза active-active.
    • Настройка BGP: выберите "Отключено", если для настройки не требуется этот параметр. Если он вам нужен, то по умолчанию для ASN устанавливается значение 65515, но вы можете его изменить.
  6. Выберите Просмотр и создание, чтобы выполнить проверку. После прохождения проверки выберите "Создать ", чтобы развернуть шлюз виртуальной сети. Развертывание может занять до 45 минут.

  7. По завершении развертывания выберите элемент Перейти к ресурсу.

  8. В левой области выберите Параметры конфигурацию "Точка — сеть" и выберите "Настроить сейчас>". Вы увидите страницу конфигурации "Точка — сеть".

    Screenshot showing how to configure a point-to-site VPN using the Azure portal.

    • Пул адресов: добавьте диапазон частных IP-адресов, который вы хотите использовать. VPN-клиенты динамически получают IP-адрес из указанного вами диапазона. Минимальное значение для маски подсети: 29 бит в режиме "активный — пассивный" и 28 бит в режиме "активный — активный".
    • Тип туннеля: укажите тип туннеля, который требуется использовать. Компьютеры, подключающиеся через собственный VPN-клиент Windows, сначала попытаются использовать IKEv2. Если это не подключается, они возвращаются к SSTP (если выбрать IKEv2 и SSTP из раскрывающегося списка). Если выбрать тип туннеля OpenVPN, можно подключиться с помощью клиента OpenVPN или VPN-клиента Azure.
    • Тип проверки подлинности. Укажите тип проверки подлинности, который вы хотите использовать (в этом случае выберите сертификат Azure).
    • Имя корневого сертификата: имя файла корневого сертификата (.cer файла).
    • Данные общедоступного сертификата: откройте корневой сертификат с помощью Блокнота и скопируйте или вставьте данные общедоступного сертификата в этом текстовом поле. Если вы использовали скрипт PowerShell в этой статье для создания самозаверяющего корневого сертификата, он будет расположен в C:\vpn-temp. Не забудьте вставить только текст, который находится между сертификатом -----BEGIN----- и -----END CERTIFICATE-----. Не включать дополнительные пробелы или символы.

    Примечание.

    Если вы не видите тип туннеля или тип проверки подлинности, шлюз использует номер SKU "Базовый". Базовый номер SKU не поддерживает проверку подлинности IKEv2. Если вы хотите использовать IKEv2, необходимо удалить и повторно создать шлюз с помощью другого номера SKU шлюза.

  9. Нажмите кнопку "Сохранить " в верхней части страницы, чтобы сохранить все параметры конфигурации и отправить сведения о корневом сертификате с открытым ключом в Azure.

Создание сертификата клиента

Каждый клиентский компьютер, подключенный к виртуальной сети с подключением типа "точка — сеть", должен иметь сертификат клиента. Вы создаете сертификат клиента из корневого сертификата и устанавливаете его на каждом клиентском компьютере. Если вы не устанавливаете действительный сертификат клиента, проверка подлинности завершится ошибкой при попытке подключения клиента. Вы можете создать сертификат клиента из корневого сертификата, созданного с помощью корпоративного решения, или создать сертификат клиента из самозаверяющего корневого сертификата.

Создание сертификата клиента с помощью корпоративного решения

При использовании корпоративного решения для создания сертификатов создайте сертификат клиента с общим именем в формате name@yourdomain.com. Используйте этот формат вместо формата доменное_имя\имя_пользователя. Убедитесь, что сертификат клиента основан на шаблоне сертификата пользователя, в котором первым указан пункт Проверка подлинности клиента. Проверить сертификат можно, дважды щелкнув его и выбрав на вкладке СведенияУлучшенный ключ.

Создание сертификата клиента из самозаверяющего корневого сертификата

Если вы не используете решение корпоративного сертификата, можно использовать PowerShell для создания сертификата клиента с URI шлюза виртуальной сети. Этот сертификат будет подписан с помощью корневого сертификата, созданного ранее. Если вы создаете сертификат клиента из самозаверяющего корневого сертификата, он автоматически устанавливается на компьютере, используемом для его создания.

Если вы хотите установить сертификат клиента на другом клиентском компьютере, экспортируйте сертификат в виде PFX-файла вместе со всей цепочкой сертификатов. После экспорта будет создан PFX-файл, содержащий сведения корневого сертификата, необходимые для проверки подлинности клиента. Чтобы экспортировать самозаверяющий корневой сертификат в виде PFX, выберите корневой сертификат и выполните те же действия, что и в разделе "Экспорт сертификата клиента".

Определение самозаверяющего корневого сертификата

Если вы используете тот же сеанс PowerShell, который использовался для создания самозаверяющего корневого сертификата, можно перейти к созданию сертификата клиента.

В противном случае выполните следующие действия, чтобы определить самозаверяющий корневой сертификат, установленный на компьютере.

  1. Получите список сертификатов, установленных на компьютере.

    Get-ChildItem -Path 'Cert:\CurrentUser\My'
    
  2. Найдите имя субъекта из возвращаемого списка, а затем скопируйте отпечаток, расположенный рядом с ним, в текстовый файл. В следующем примере указано два сертификата. CN-имя — это имя самозаверяющего корневого сертификата, на основе которого требуется создать дочерний сертификат. В этом случае он называется P2SRootCert.

    Thumbprint                                Subject
    ----------                                -------
    AED812AD883826FF76B4D1D5A77B3C08EFA79F3F  CN=P2SChildCert4
    7181AA8C1B4D34EEDB2F3D3BEC5839F3FE52D655  CN=P2SRootCert
    
  3. Объявите переменную для корневого сертификата, используя отпечаток из предыдущего шага. Замените THU МБ PRINT отпечатком корневого сертификата, из которого требуется создать сертификат клиента.

    $rootcert = Get-ChildItem -Path 'Cert:\CurrentUser\My\<THUMBPRINT>'
    

    Например, используя отпечаток P2SRootCert на предыдущем шаге, команда выглядит следующим образом:

    $rootcert = Get-ChildItem -Path 'Cert:\CurrentUser\My\7181AA8C1B4D34EEDB2F3D3BEC5839F3FE52D655'
    

Создание сертификата клиента

New-AzVpnClientConfiguration Используйте командлет PowerShell для создания сертификата клиента. Если вы не используете тот же сеанс PowerShell, который использовался для создания самозаверяющего корневого сертификата, необходимо определить самозаверяющий корневой сертификат , как описано в предыдущем разделе. Перед запуском скрипта замените <resource-group-name> именем группы ресурсов и <vpn-gateway-name> именем только что развернутого шлюза виртуальной сети.

Важно!

Запустите этот сценарий PowerShell от имени администратора на локальном компьютере Windows, который требуется подключить к общей папке Azure. Компьютер должен работать под управлением Windows 10/Windows Server 2016 или более поздней версии. Не запускайте скрипт из Cloud Shell в Azure. Перед запуском скрипта (Connect-AzAccount) выполните вход в учетную запись Azure.

$clientcertpassword = '<enter-your-password>'
$resourceGroupName  = '<resource-group-name>'
$vpnName            = '<vpn-gateway-name>'
$vpnTemp            = 'C:\vpn-temp'
$certLocation       = 'Cert:\CurrentUser\My'

$vpnClientConfigParams = @{
    ResourceGroupName    = $resourceGroupName
    Name                 = $vpnName
    AuthenticationMethod = 'EAPTLS'
}
$vpnClientConfiguration = New-AzVpnClientConfiguration @vpnClientConfigParams

$webRequestParams = @{
    Uri = $vpnClientConfiguration.VpnProfileSASUrl
    OutFile = "$vpnTemp\vpnclientconfiguration.zip"
}
Invoke-WebRequest @webRequestParams

$expandArchiveParams = @{
    Path            = "$vpnTemp\vpnclientconfiguration.zip"
    DestinationPath = "$vpnTemp\vpnclientconfiguration"
}
Expand-Archive @expandArchiveParams

$vpnGeneric = "$vpnTemp\vpnclientconfiguration\Generic"
$vpnProfile = ([xml](Get-Content -Path "$vpnGeneric\VpnSettings.xml")).VpnProfile

$exportedclientcertpath = "$vpnTemp\P2SClientCert.pfx"
$clientcertname         = "CN=$($vpnProfile.VpnServer)"

$selfSignedCertParams = @{
    Type              = 'Custom'
    DnsName           = $vpnProfile.VpnServer
    KeySpec           = 'Signature'
    Subject           = $clientcertname
    KeyExportPolicy   = 'Exportable'
    HashAlgorithm     = 'sha256'
    KeyLength         = 2048
    CertStoreLocation = $certLocation
    Signer            = $rootcert
    TextExtension     = @('2.5.29.37={text}1.3.6.1.5.5.7.3.2')
}
$clientcert = New-SelfSignedCertificate @selfSignedCertParams

$mypwd = ConvertTo-SecureString -String $clientcertpassword -Force -AsPlainText

Export-PfxCertificate -FilePath $exportedclientcertpath -Password $mypwd -Cert $clientcert |
    Out-Null

Настройка VPN-клиента

Шлюз виртуальной сети Azure создаст загружаемый пакет с файлами конфигурации, необходимыми для инициализации VPN-подключения на локальном компьютере с Windows. Пакет конфигурации содержит параметры, относящиеся к созданному VPN-шлюзу. Если вы вносите изменения в шлюз, например изменение типа туннеля, сертификата или типа проверки подлинности, необходимо создать другой пакет конфигурации профиля VPN-клиента и установить его на каждом клиенте. В противном случае VPN-клиенты могут не подключаться.

Вы настроите VPN-подключение с помощью функции AlwaysOn VPN , представленной в Windows 10/Windows Server 2016. Этот пакет также содержит исполняемые файлы, которые будут настраивать устаревший VPN-клиент Windows при необходимости. В этом руководстве используется VPN AlwaysOn, а не устаревший VPN-клиент Windows, так как vpn-клиент Always On позволяет подключаться и отключаться от VPN Azure, не имея разрешений администратора на компьютер.

Установка сертификата клиента

Чтобы установить сертификат клиента, необходимый для проверки подлинности в шлюзе виртуальной сети, выполните следующие действия на клиентском компьютере.

  1. Когда сертификат клиента будет экспортирован, найдите PFX-файл и скопируйте его на клиентский компьютер.
  2. На клиентском компьютере дважды щелкните PFX -файл, чтобы установить его. Для параметра Расположение хранилища оставьте значение Текущий пользователь, а затем выберите кнопку Далее.
  3. На странице Файл для импорта не вносите никаких изменений. Выберите Далее.
  4. На странице Защита с помощью закрытого ключа введите пароль для сертификата или проверьте, правильно ли выбран субъект безопасности, а затем выберите кнопку Далее.
  5. На странице Хранилище сертификатов оставьте расположение по умолчанию и выберите кнопку Далее.
  6. Выберите Готово. На странице Предупреждение системы безопасности для установки сертификата выберите Да. Вы можете выбрать "Да" для этого предупреждения системы безопасности, так как вы создали сертификат.
  7. Сертификат успешно импортирован.

Установка VPN-клиента

В этом разделе описана настройка собственного VPN-клиента, который входит в операционную систему Windows для подключения к виртуальной сети (IKEv2 и SSTP). Для такой конфигурации дополнительное клиентское программное обеспечение не требуется.

Просмотр файлов конфигурации

На клиентском компьютере перейдите к C:\vpn-temp папке vpnclientconfiguration и откройте ее, чтобы просмотреть следующие вложенные папки:

  • WindowsAmd64 и WindowsX86, которые содержат пакеты установщика 64- и 32-разрядной версий Windows. Пакет установщика WindowsAmd64 предназначен для всех поддерживаемых 64-разрядных клиентов Windows, не только Amd.
  • Generic. Эта папка содержит общие сведения для создания собственной конфигурации VPN-клиента. Эта папка доступна, если для шлюза настроены протоколы IKEv2 и SSTP+IKEv2. Если настроен только SSTP, общая папка отсутствует.

Настройка профиля VPN-клиента

На каждом клиентском компьютере Windows можно использовать один и тот же пакет конфигурации VPN-клиента, если его версия соответствует архитектуре клиента.

Примечание.

Для запуска пакета установщика необходимо иметь права Администратор istrator на клиентском компьютере Windows, с которого требуется подключиться.

  1. Выберите файлы конфигурации VPN-клиента, которые соответствуют архитектуре компьютера Windows. Для 64-разрядной архитектуры процессора выберите пакет установщика VpnClientSetupAmd64 . Для 32-разрядной архитектуры процессора выберите пакет установщика VpnClientSetupX86 .

  2. Дважды щелкните пакет, чтобы установить его. При появлении всплывающего окна SmartScreen щелкните Подробнее, а затем Выполнить в любом случае.

  3. Подключение к VPN. Перейдите к VPN-Параметры и найдите созданное VPN-подключение. Это то же имя, что и виртуальная сеть. Нажмите Подключиться. Может появиться всплывающее сообщение. В таком случае выберите Продолжить, чтобы использовать более высокий уровень привилегий.

  4. На странице состояния подключения щелкните Подключить. Если появится окно Выбор сертификата, убедитесь в том, что отображается сертификат клиента, с помощью которого вы хотите подключиться к сети. Если это не так, используйте стрелку раскрывающегося списка, чтобы выбрать правильный сертификат, а затем нажмите кнопку "ОК".

Подключение файлового ресурса Azure

Теперь, когда вы настроили VPN типа "точка — сеть", его можно использовать для подключения общей папки Azure к локальному компьютеру.

Чтобы подключить общую папку с помощью ключа учетной записи хранения, откройте командную строку Windows и выполните следующую команду. Замените <YourStorageAccountName>, <FileShareName> и <YourStorageAccountKey> собственными значениями. Если носитель "Z:" уже используется, укажите букву доступного диска. Ключ учетной записи хранения можно найти в портал Azure, перейдя к учетной записи хранения и выбрав ключи доступа к сети и безопасности и сети>.

net use Z: \\<YourStorageAccountName>.file.core.windows.net\<FileShareName> /user:localhost\<YourStorageAccountName> <YourStorageAccountKey>

Замена корневого сертификата VPN

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

Перед выполнением скрипта замените <resource-group-name>, <desired-vpn-name-here> и <new-root-cert-name> своими значениями.

#Creating the new Root Certificate
$ResourceGroupName           = '<resource-group-name>'
$vpnName                     = '<desired-vpn-name-here>'
$NewRootCertName             = '<new-root-cert-name>'
$rootcertname                = "CN=$NewRootCertName"
$certLocation                = 'Cert:\CurrentUser\My'
$date                        = Get-Date -Format 'MM_yyyy'
$vpnTemp                     = "C:\vpn-temp_$date"
$exportedencodedrootcertpath = "$vpnTemp\P2SRootCertencoded.cer"
$exportedrootcertpath        = "$vpnTemp\P2SRootCert.cer"

if (-Not (Test-Path -Path $vpnTemp -PathType Container)) {
    New-Item -ItemType Directory -Force -Path $vpnTemp | Out-Null
}

$selfSignedCertParams = @{
    Type              = 'Custom'
    KeySpec           = 'Signature'
    Subject           = $rootcertname
    KeyExportPolicy   = 'Exportable'
    HashAlgorithm     = 'sha256'
    KeyLength         = 2048
    CertStoreLocation = $certLocation
    KeyUsageProperty  = 'Sign'
    KeyUsage          = 'CertSign'
}
$rootcert = New-SelfSignedCertificate @selfSignedCertParams

$exportCertParams = @{
    Cert      = $rootcert
    FilePath  = $exportedencodedrootcertpath
    NoClobber = $true
}
Export-Certificate @exportCertParams | Out-Null

certutil -encode $exportedencodedrootcertpath $exportedrootcertpath | Out-Null

$rawRootCertificate = Get-Content -Path $exportedrootcertpath

$rootCertificate = ''

foreach($line in $rawRootCertificate) { 
    if ($line -notlike '*Certificate*') { 
        $rootCertificate += $line 
    } 
}

#Fetching gateway details and adding the newly created Root Certificate.
$gateway = Get-AzVirtualNetworkGateway -Name $vpnName -ResourceGroupName $ResourceGroupName

$vpnClientRootCertParams = @{
    PublicCertData               = $rootCertificate
    ResourceGroupName            = $ResourceGroupName
    VirtualNetworkGatewayName    = $gateway
    VpnClientRootCertificateName = $NewRootCertName
}
Add-AzVpnClientRootCertificate @vpnClientRootCertParams

См. также