Создание и экспорт сертификатов для подключений "точка — сеть" с помощью PowerShell

Для проверки подлинности подключений "точка — сеть" используются сертификаты. В этой статье показано, как создать самозаверяющий корневой сертификат, а также сертификаты клиента с помощью PowerShell в Windows 10 или Windows Server 2016 или более поздней версии.

Командлеты PowerShell, которые используются для создания сертификатов, являются частью операционной системы и не работают в других версиях Windows. Операционная система сервера виртуальных машин используется только для создания сертификатов. После создания сертификатов их можно отправить или установить в любой поддерживаемой клиентской операционной системе.

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

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

Используйте командлет New-SelfSignedCertificate для создания самозаверяющего корневого сертификата. Дополнительные сведения о параметре см. в разделе New-SelfSignedCertificate.

  1. На компьютере с Windows 10 или более поздней версией или Windows Server 2016 откройте консоль Windows PowerShell с более высоким уровнем привилегий. Эти примеры не запускаются через кнопку Try It (Попробовать) в Azure Cloud Shell. Их нужно запустить локально.

  2. Используйте следующий пример для создания самозаверяющего корневого сертификата. Следующий пример создает самозаверяющий корневой сертификат P2SRootCert, который автоматически устанавливается в папку Certificates-Current User\Personal\Certificates. Этот сертификат можно просмотреть, открыв файл certmgr.msc или раздел Управление сертификатами пользователей.

    Выполните следующий пример, внеся необходимые изменения.

    $cert = New-SelfSignedCertificate -Type Custom -KeySpec Signature `
    -Subject "CN=P2SRootCert" -KeyExportPolicy Exportable `
    -HashAlgorithm sha256 -KeyLength 2048 `
    -CertStoreLocation "Cert:\CurrentUser\My" -KeyUsageProperty Sign -KeyUsage CertSign
    
  3. Оставьте консоль PowerShell открытой и перейдите к следующим шагам, чтобы создать сертификат клиента.

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

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

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

В примерах используется командлет New-SelfSignedCertificate для создания сертификата клиента, срок действия которого истекает через год. Дополнительные сведения о параметре, например о задании другого значения срока действия сертификата клиента, см. в разделе New-SelfSignedCertificate.

Пример 1. Сеанс консоли PowerShell по-прежнему открыт

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

Измените и запустите пример, чтобы создать сертификат клиента. Если выполнить этот пример, не изменив его, то будет создан сертификат клиента P2SChildCert. Если требуется указать другое имя дочернего сертификата, измените значение CN. Не изменяйте TextExtension при выполнении данного примера. Сертификат клиента, который создается, автоматически устанавливается в папку Certificates - Current User\Personal\Certificates на компьютере.

New-SelfSignedCertificate -Type Custom -DnsName P2SChildCert -KeySpec Signature `
-Subject "CN=P2SChildCert" -KeyExportPolicy Exportable `
-HashAlgorithm sha256 -KeyLength 2048 `
-CertStoreLocation "Cert:\CurrentUser\My" `
-Signer $cert -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.2")

Пример 2. Новый сеанс консоли PowerShell

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

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

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

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

    $cert = Get-ChildItem -Path "Cert:\CurrentUser\My\<THUMBPRINT>"
    

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

    $cert = Get-ChildItem -Path "Cert:\CurrentUser\My\7181AA8C1B4D34EEDB2F3D3BEC5839F3FE52D655"
    
  4. Измените и запустите пример, чтобы создать сертификат клиента. Если выполнить этот пример, не изменив его, то будет создан сертификат клиента P2SChildCert. Если требуется указать другое имя дочернего сертификата, измените значение CN. Не изменяйте TextExtension при выполнении данного примера. Сертификат клиента, который создается, автоматически устанавливается в папку Certificates - Current User\Personal\Certificates на компьютере.

    New-SelfSignedCertificate -Type Custom -DnsName P2SChildCert -KeySpec Signature `
    -Subject "CN=P2SChildCert" -KeyExportPolicy Exportable `
    -HashAlgorithm sha256 -KeyLength 2048 `
    -CertStoreLocation "Cert:\CurrentUser\My" `
    -Signer $cert -TextExtension @("2.5.29.37={text}1.3.6.1.5.5.7.3.2")
    

Экспорт открытого ключа корневого сертификата (.cer)

После создания самозаверяющего корневого сертификата экспортируйте его CER-файл (не закрытый ключ). Позднее вы отправите в Azure необходимые данные сертификата, сохраненные в файл. Чтобы экспортировать CER-файл для самозаверяющего корневого сертификата и получить необходимые данные сертификата, сделайте следующее.

  1. Чтобы получить CER-файл сертификата, откройте окно Управление сертификатами пользователей.

    Найдите самозаверяющий корневой сертификат (обычно он находится в папке "Сертификаты — текущий пользователь\Личное\Сертификаты") и щелкните его правой кнопкой мыши. Выберите Все задачи ->Экспортировать. Откроется мастера экспорта сертификатов.

    Если вам не удается найти сертификат в разделе "Текущий пользователь\Личное\Сертификаты", возможно, вместо раздела "Сертификаты — текущий пользователь" вы случайно открыли раздел "Сертификаты — локальный компьютер".

    Снимок экрана: окно Экспортировать"." data-linktype="relative-path">

  2. В мастере нажмите кнопку Далее.

  3. Выберите Нет, не экспортировать закрытый ключ и снова нажмите кнопку Далее.

    Снимок экрана: параметр

  4. На странице Формат экспортируемого файла выберите Файлы X.509 (.CER) в кодировке Base-64 и нажмите кнопку Далее.

    Снимок экрана: экспорт в кодировке Base-64.

  5. На странице Имя экспортируемого файла нажмите кнопку Обзор, чтобы перейти в расположение для экспорта сертификата. В поле Имя файлавведите имя для файла сертификата. Затем щелкните Далее.

  6. Нажмите кнопку Готово, чтобы выполнить экспорт сертификата.

  7. Вы увидите подтверждение с сообщением "Экспорт выполнен успешно".

  8. Перейдите в расположение, куда вы экспортировали сертификат, и откройте его в Блокноте или любом другом текстовом редакторе. Если вы экспортировали сертификат в правильном формате Base-64 X.509 (CER), то вы увидите примерно такой текст, как в следующем примере. Раздел, выделенный синим цветом, содержит сведения, которые вам нужно скопировать и отправить в Azure.

    Снимок экрана: в Блокноте открыт CER-файл, в котором выделены данные сертификата.

    Если ваш файл не похож на приведенный пример, это, скорее всего, означает, что экспорт выполнен не в формате X.509 (.CER) с кодировкой Base-64. Кроме того, при использовании другого текстового редактора вместо Блокнота следует учитывать, что в некоторых редакторах может выполняться непреднамеренное форматирование в фоновом режиме. Это может вызвать проблемы при передаче текста из этого сертификата в Azure.

Экспорт самозаверяющего корневого сертификата и закрытого ключа для его сохранения (необязательно)

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

Экспорт сертификата клиента

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

  1. Чтобы экспортировать сертификат клиента, откройте раздел Управление сертификатами пользователей. По умолчанию создаваемые сертификаты клиента хранятся в папке Certificates - Current User\Personal\Certificates. Щелкните правой кнопкой мыши сертификат, который нужно экспортировать, выберите Все задачи, а затем — Экспорт, чтобы открыть мастер экспорта сертификатов.

    Снимок экрана: окно Экспортировать"." data-linktype="relative-path">

  2. В мастере экспорта сертификатов нажмите кнопку Далее, чтобы продолжить.

  3. Выберите Да, экспортировать закрытый ключ, а затем нажмите кнопку Далее.

    Снимок экрана: выбран вариант

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

    Снимок экрана: страница формата экспортируемого файла.

  5. На странице Безопасность следует защитить закрытый ключ. Если вы решите использовать пароль, обязательно запишите или запомните пароль, заданный для этого сертификата. Затем щелкните Далее.

    Снимок экрана: ввод и повторный ввод пароля.

  6. На странице Имя экспортируемого файла нажмите кнопку Обзор, чтобы перейти в расположение для экспорта сертификата. В поле Имя файлавведите имя для файла сертификата. Затем щелкните Далее.

  7. Нажмите кнопку Готово, чтобы выполнить экспорт сертификата.

установить экспортированный сертификат клиента;

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

Дальнейшие действия

Продолжайте настраивать параметры конфигурации типа "точка — сеть".