Генерация ключей OpenVPN
1. Введение
Взаимодействие между сервером и клиентом OpenVPN осуществляется по защищенному каналу связи. Для авторизации и передачи данных используется протокол SSL. Исходя из этого необходима процедура генерации и выдачи ключей сертификатов (как клиенту, так и серверу).
Для генерации сертификатов и обслуживания ключей (сервера и клиентов) используется пакет easy-rsa.
Описание файлов (директория keys):
- Файлы *.csr — Запросы на подпись сертификатов (СЦ)
- Файлы n.pem — Дубликаты сертификатов для базы данных (СЦ)
- index.txt — База данных выданных сертификатов (СЦ)
- serial — Серийный (порядковый) номер последнего выданного сертификата (СЦ)
- crl.pem — Список отозванных сертификатов (СЦ)
- ca.crt — Корневой сертификат (СЦ/сервер/клиент)
- ca.key — Корневой ключ (СЦ)
- dhn.pem — Ключ Диффи Хельмана (сервер)
- server-name.crt — Сертификат X.509 сервера (сервер)
- server-name.key — Секретный ключ сервера (сервер)
- client-name.crt — Сертификат X.509 клиента (клиент)
- client-name.key — Секретный ключ клиента (клиент)
- ta.key — TLS-ключ (сервер/клиент)
2. Генерация ключей сервера
Примечание: операции, описанные в данном разделе выполняются только один раз, в процессе инсталляции сервера.
Перейти в директорию easy-rsa OpenVPN сервера. Убедиться, что файлы ca.crt и ca.key присутствуют в директории сертификационного центра (СЦ) сервера.
Перейти в командную оболочку sh:
Установить переменные окружения:
Создать сертификат сервера server-name:
Примечание: наименование сервера должно совпадать с именем хоста сервера (см. uname -a).
Создать файл параметров Диффи-Хелмана:
Создать TLS-ключ:
Создать файл отзыва сертификатов (CRL):
export KEY_OU=""
openssl ca -config openssl.cnf -gencrl -out keys/crl.pem
3. Генерация и выдача ключей клиенту
Перейти в директорию easy-rsa OpenVPN сервера. Убедиться, что файлы ca.crt и ca.key присутствуют в директории сертификационного центра (СЦ) сервера.
Перейти в командную оболочку sh:
Установить переменные окружения:
Создать сертификат клиента client-name:
Создать базовый файл конфигурации клиента openvpn.conf со следующим содержанием:
dev tun0
proto tcp
remote SERVER_IP PORT_NUMBER
resolv-retry infinite
nobind
script-security 3 system
ca /usr/local/etc/openvpn/keys/ca.crt
cert /usr/local/etc/openvpn/keys/client-name.crt
key /usr/local/etc/openvpn/keys/client-name.key
tls-auth /usr/local/etc/openvpn/keys/ta.key 1
comp-lzo
verb 3
Выдать клиенту client-name следующие файлы:
ca.crt
client-name.crt
client-name.key
ta.key
openvpn.conf
4. Команды администрирования
Отозвать сертификат клиента client-name:
Просмотреть список отозванных сертификатов:
Создать запрос на получение сертификата:
Подписать запрос на получение сертификата:
Удаление всех ключей с сервера:
ВНИМАНИЕ! Данная команда выполняется только при ликвидации сервера.