Поделиться через


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

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

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

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

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

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

  1. На компьютере с Windows 10 или более поздней версией или Windows Server 2016 откройте консоль Windows PowerShell с более высоким уровнем привилегий.

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

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

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

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

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

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

В примерах используется командлет New-SelfSignedCertificate для создания сертификата клиента.

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

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

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


   $params = @{
       Type = 'Custom'
       Subject = 'CN=P2SChildCert'
       DnsName = 'P2SChildCert'
       KeySpec = 'Signature'
       KeyExportPolicy = 'Exportable'
       KeyLength = 2048
       HashAlgorithm = 'sha256'
       NotAfter = (Get-Date).AddMonths(18)
       CertStoreLocation = 'Cert:\CurrentUser\My'
       Signer = $cert
       TextExtension = @(
        '2.5.29.37={text}1.3.6.1.5.5.7.3.2')
   }
   New-SelfSignedCertificate @params

Пример 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 на компьютере.

    $params = @{
        Type = 'Custom'
        Subject = 'CN=P2SChildCert'
        DnsName = 'P2SChildCert1'
        KeySpec = 'Signature'
        KeyExportPolicy = 'Exportable'
        KeyLength = 2048
        HashAlgorithm = 'sha256'
        NotAfter = (Get-Date).AddMonths(18)
        CertStoreLocation = 'Cert:\CurrentUser\My'
        Signer = $cert
        TextExtension = @(
         '2.5.29.37={text}1.3.6.1.5.5.7.3.2')
    }
    New-SelfSignedCertificate @params
    

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

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

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

    Найдите самозаверяющий корневой сертификат, как правило, в сертификатах — current User\Personal\Certificates и щелкните правой кнопкой мыши. Выберите все задачи ->Экспорт. Откроется мастера экспорта сертификатов.

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

    Снимок экрана: окно

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

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

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

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

    Снимок экрана: экспорт в кодировке 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. Щелкните правой кнопкой мыши сертификат, который нужно экспортировать, выберите Все задачи, а затем — Экспорт, чтобы открыть мастер экспорта сертификатов.

    Снимок экрана: окно

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

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

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

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

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

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

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

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

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

Linux

Инструкции по Linux см. в разделе "Создание самозаверяющих сертификатов — Linux — OpenSSL " или "Создание самозаверяющих сертификатов" — Linux — strongSwan.

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

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

Следующие шаги

Для продолжения перейдите к разделу Действия с Виртуальной глобальной сетью для пользовательских VPN-подключений.