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

Для аутентификации подключений типа "точка — сеть" используются сертификаты. Эта статья поможет создать самозаверяющий корневой сертификат, а также сертификаты клиента с помощью PowerShell в Windows 10 или Windows Server 2016. Если вы ищете инструкции для других сертификатов, ознакомьтесь со статьями о создании сертификатов с помощью средств Linux или MakeCert.

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

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

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

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

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

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

    Выполните вход с помощью Connect-AzAccount командлета. Затем выполните следующий пример с любыми необходимыми изменениями.

    $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-файл, откройте раздел Управление сертификатами пользователей. Найдите корневой самозаверяющий сертификат (обычно он находится в папке Certificates - <текущий_пользователь>\Personal\Certificates) и щелкните его правой кнопкой мыши. Щелкните Все задачи > Экспорт. Откроется мастера экспорта сертификатов. Если не удается найти сертификат в разделе <текущий_пользователь>\Personal\Certificates, возможно, вы случайно открыли "Certificates — Local Computer"вместо "Certificates— <текущий_пользователь>". Если вы хотите открыть диспетчер сертификатов в области текущего пользователя с помощью PowerShell, выполните команду certmgr в окне консоли.

    На снимке экрана показано окно сертификатов с выбранными сертификатами и пункт "Экспорт" в разделе "Все задачи".

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

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

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

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

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

    Выбор параметра "Файлы X.509 (.CER) в кодировке Base-64"

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

    На снимке экрана показан мастер экспорта сертификатов с текстовым полем "Имя файла" и кнопка просмотра.

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

    На снимке экрана показан мастер экспорта сертификатов с выбранными параметрами.

  7. Сертификат успешно экспортирован.

    На снимке экрана показано сообщение об успешном выполнении экспорта.

  8. Экспортированный сертификат выглядит примерно так:

    На снимке экрана показан значок сертификата и имя файла с расширением CER.

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

    Открытие в Блокноте

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

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

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

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

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

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

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

    На снимке экрана отображается приветственное сообщение мастера экспорта сертификатов.

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

    Экспорт закрытого ключа

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

    Формат экспортируемого файла

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

    На снимке экрана показана страница Безопасность мастера экспорта сертификатов с выбранным паролем и подтверждением и следующим выделением.

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

    Имя экспортируемого файла

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

    На снимке экрана показан мастер экспорта сертификатов с указанными параметрами.

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

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

См. инструкции по установке сертификата клиента для подключений типа "точка — сеть".

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

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