Примеры генерации сертификатов для IKEv2 VPN

ID статьи: 997
Последнее обновление: 27 мая, 2024
Documentation:
Product: NGFW
Version: 7.1.0

Генерация сертификатов на linux с использованием OpenSSL

Пример генерации сертификатов в ОС linux с помощью библиотеки OpenSSL на основе самоподписанного корневого сертификата.

Действия на стороне VPN-сервера

1. Создать самоподписанный корневой сертификат rootCA.

$ openssl genrsa -aes256 -passout pass:1234 -out rootCA.key 4096
$ openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -out rootCA.pem -subj "/C=RU/ST=Russia/L=Novosibirsk/O=UserGate/OU=QA/CN=QA"

где rootCA.pem — это корневой сертификат.

Проверить, что сертификат корневой (в выводе должна быть строка: CA:TRUE):

$ openssl x509 -in rootCA.pem -text

2. На основе корневого сертификата создать сертификат для VPN-сервера.

  • Требованияkey usage: server auth

  • Указать subjectAltName соответствующее DNS-имени VPN-сервера.

$ openssl genrsa -aes256 -passout pass:1234 -out server.pass.key 4096
$ openssl rsa -passin pass:1234 -in server.pass.key -out server-key.pem

где server-key.pem — это приватный ключ.

Для генерации запроса на выпуск сертификата создать файл openssl-server.cnf с данными для запроса сертификата. Пример заполненного данными файла: 

[ req ]
prompt = no
days = 365
req_extensions = v3_req
distinguished_name = req_distinguished_name

[ req_distinguished_name ]
C = Ru
ST = Sib
L = Nsk
O = ep.local
OU = ep.local
CN = vpnserver.ep.local #dns name vpn-сервера
emailAddress = mail1@ep.local

[ v3_req ]
keyUsage = critical, digitalSignature
extendedKeyUsage = serverAuth
subjectAltName = @sans

[ sans ] 
DNS.0 = vpnserver.ep.local # dns name vpn-сервера

Создать запрос на выпуск сертификата с учетом данных из созданного выше файла openssl-server.cnf. На этом этапе прописывается секция Subject сертификата:

$ openssl req -new -key server-key.pem -out server.csr -config openssl-server.cnf

Подписать запрос корневым сертификатом. На этом этапе прописывается секция X509v3 extentions сертификата:

$ openssl x509 -CAcreateserial -req -extfile openssl-server.cnf -extensions v3_req -days 365 -in server.csr -CA rootCA.pem -CAkey rootCA.key -out server-cert.pem

где server-cert.pem — это сертификат VPN-сервера.

3. Импортировать сертификат VPN-сервера в консоли администратора NGFW, исполняющего роль VPN-сервера. Для этого перейти в раздел UserGate ➜ Сертификаты и нажать кнопку Импортировать.  В открывшемся окне указать название сертификата и добавить сгенерированные файлы сертификата VPN-сервера (sever-cert.pem) и приватного ключа (server-key.pem).

4. Импортировать корневой сертификат в консоли администратора NGFW, исполняющего роль VPN-сервера. Для этого перейти в раздел UserGate ➜ Сертификаты и нажать кнопку Импортировать. В открывшемся окне указать название сертификата и добавить сгенерированный файл самоподписанного корневого сертификата (rootCA.pem) без указания приватного ключа.

5. Создать профиль клиентских сертификатов в консоли администратора NGFW, исполняющего роль VPN-сервера. Для этого перейти в раздел UserGate ➜ Профили клиентских сертификатов и нажать кнопку Добавить. В открывшемся окне указать название профиля, добавить импортированный на предыдущем шаге корневой сертификат и выбрать поле для авторизации Commоn-name или Subject alt name для получения имени пользователя.

6. На этапе настройки VPN будет необходимо создать профиль безопасности VPN. Допускается иметь несколько профилей безопасности и использовать их для построения соединений с разными типами клиентов. Для создания профиля безопасности VPN-сервера в консоли администратора NGFW, исполняющего роль VPN-сервера необходимо перейти в раздел VPN ➜ Серверные профили безопасности и нажать кнопку Добавить. В открывшемся окне указать необходимые параметры профиля безопасности (подробнее смотрите в разделе Настройка VPN). При использовании протокола IKEv2 для организации VPN необходимо указать импортированный в пункте 3 сертификат VPN-сервера и профиль пользовательского сертификата, созданного в пункте 5, если в качестве режима аутентификации будет указан PKI. 

Действия на стороне VPN-клиента

1. Создать сертификат для VPN-клиента.

Для генерации запроса на выпуск сертификата для VPN-клиента создать файл openssl-client.cnf с данными для запроса сертификата. Пример заполненного данными файла: 

[ req ]
prompt             = no
days               = 365
req_extensions     = v3_req
distinguished_name = req_distinguished_name
 
[ req_distinguished_name ]
C                  = Ru          #             необязательный параметр
ST                 = Sib         #             необязательный параметр
L                  = Nsk         #             необязательный параметр
O                  = ep.local    # имя домена, необязательный параметр
OU                 = ep.local    # имя домена, необязательный параметр
CN                 = u1          #             Обязательный
                                 # Идентификатор пользователя, которому выдан сертификат
                                 # Может быть учетной записью, под которой будет выполняться подключение к vpn-серверу
                                               
[ v3_req ]
keyUsage           = critical, digitalSignature
extendedKeyUsage   = clientAuth
subjectAltName     = otherName:msUPN;UTF8:u1@ep.local # Пользователь, под учетной записью которого будет выполняться подключение к VPN-серверу.

Поле subjectAltName используется, если в Профиле пользовательских сертификатов поле для получения имени пользователя будет указано, как Subject alt name.

Сгенерировать приватный ключ для VPN-клиента:

$ openssl genrsa -aes256 -passout pass:1234 -out client.pass.key 4096 # генерация пароля 
$ openssl rsa -passin pass:1234 -in client.pass.key -out client-key.pem # генерация ключа

Создать запрос на выпуск сертификата с учетом данных из созданного выше файла openssl-client.cnf и подписать его корневым сертификатом:

$ openssl req -new -key client-key.pem -out client.csr -config openssl-client.cnf 
$ openssl x509 -CAcreateserial -req -extfile openssl-client.cnf -extensions v3_req -days 365 -in client.csr -CA rootCA.pem -CAkey rootCA.key -out client-cert.crt

3. Для использования в клиентах с ОС Windows в сценарии Remote Access VPN создать файл client.pfx, содержащий закрытый ключ и сертификат пользователя. Файл загружается в Windows и используется для подключения к VPN.

$ openssl pkcs12 -export -passout pass:1234 -out client.pfx -inkey client-key.pem -in client-cert.crt 

4. Файл client.pfx импортировать в Windows и расположить в репозиторий Локальный компьютер, хранилище — Автоматически выбрать хранилище, по умолчанию направится в Личное.

5. Для использования клиентского сертификата на стороне узла — VPN-клиента в сценарии Site-to-Site VPN c IKEv2 необходимо импортировать созданный сертификат VPN-клиента. Для этого в консоли администратора NGFW, исполняющего роль VPN-клиента перейти в раздел UserGate ➜ Сертификаты и нажать кнопку Импортировать.  В открывшемся окне указать название сертификата и добавить сгенерированные файлы сертификата VPN-клиента (client-cert.crt) и приватного ключа (client-key.pem). Далее, на этапе настройки VPN при создании клиентского профиля безопасности VPN необходимо перейти в раздел VPN ➜ Клиентские профили безопасности и нажать кнопку Добавить. В открывшемся окне указать необходимые параметры профиля безопасности (подробнее смотрите в разделе Настройка VPN). При использовании протокола IKEv2 для организации VPN необходимо в поле Сертификат клиента указать импортированный ранее сертификат VPN-клиента.  

Генерация сертификатов Центром Сертификации Microsoft Server

Пример генерации сертификатов Центром Сертификации Microsoft Server для сценария Remote Access VPN.

1. Выпустить Центром Сертификации корневой сертификат (rootCA).

2. Выпустить на основе корневого сертификата (rootCA) сертификат VPN-сервера.

  • Указать требования — key usage: server auth

  • Минимальный размер ключа - 4096;

  • Указать subjectAltName соответствующее DNS-имени VPN-сервера.

  • Создать шаблон для выдачи пользовательских сертификатов. UPN атрибут пользователя должны совпадать с атрибутами сертификата CN и\или SAN:principal name.

Действия на стороне VPN-сервера

1. Импортировать корневой сертификат (rootCA) в консоли администратора NGFW, исполняющего роль VPN-сервера. Для этого перейти в раздел UserGate ➜ Сертификаты и нажать кнопку Импортировать.

2. Импортировать сертификат VPN-сервера в консоли администратора NGFW, исполняющего роль VPN-сервера. Для этого перейти в раздел UserGate ➜ Сертификаты и нажать кнопку Импортировать. 

3. Создать профиль пользовательских сертификатов в консоли администратора NGFW, исполняющего роль VPN-сервера. Для этого перейти в раздел UserGate ➜ Профили пользовательских сертификатов и нажать кнопку Добавить. В открывшемся окне указать название профиля, добавить импортированный ранее корневой сертификат и выбирать поле для авторизации Commоn-name или Subject alt name для получения имени пользователя.

4. В разделе VPN ➜ Серверные профили безопасности  добавить в Remote access VPN profile:

  • Сертификат в поле Сертификат сервера.

  • Выбрать созданный Профиль пользовательского сертификата.

  • Выбрать Режим аутентификации — посредством сертификатов PKI.

Действия на стороне VPN-клиента

1. Запросить сертификат на клиентской машине согласно созданному раннее шаблону пользовательского сертификата. 

2. Полученный сертификат расположить в репозиторий Локальный компьютер, хранилище —  Личное.

Эта статья была:   Полезна | Не полезна
Сообщить об ошибке
ID статьи: 997
Последнее обновление: 27 мая, 2024
Ревизия: 44
Просмотры: 9075
Комментарии: 0