Генерація RSA ключів для OpenVPN виконується в кілька простих кроків.
Але перш ніж перейти до генерації ключів нам буде потрібно визначитися з деякими моментами.
Нам потрібні?
При генерації клієнтських ключів важливо зрозуміти, що ключ клієнта може бути або "персональним" або "спільним" одним на декількох клієнтів і навіть одним на всіх клієнтів.
Варіант використання клієнтського ключа визначається однією опцією в конфігураційному файлі на OpenVPN сервері. Опція на сервері дозволяє заборонити або дозволити з'єднання з сервером якщо клієнт з таким ключем вже з'єднався з сервером.
Для управління сертифікатами в постачанні OpenVPN йдуть прості у використанні скрипти які дозволяють виконати хитрі маніпуляції з незрозумілими програмами і їх параметрами. Але перш за все необхідно налаштувати ці скрипти.
Мова піде про Linux конкретно Red Hat Fedora. У Fedora ці скрипти розташовані в каталозі /usr/share/openvpn/easy-rsa/2.0/
Ці скрипти я зазвичай копіюю в домашній каталог / home / user001 / openvpn-easy-rsa / і там маніпулюю зі скриптами.
По-перше, для генерації ключів не потрібні права адміністратора. По-друге, для безпеки отримані приватні ключі можна показувати нікому, а в рідному каталозі вони будуть видні всім користувачам тієї машини де їх генерували. По-третє, я люблю щоб все було в робочих каталогах.
Якщо комусь не хочеться вникати в опису команд, в самому кінці сторінки є короткий список команд для генерації ключів. Налаштуйте файлик vars і в путь.
Налаштування скриптів
Відкрийте файл vars і змініть наступні поля як вам подобається. Але вони не можуть бути порожніми. Так написано в документації :)
Обмеження на довжину поля KEY_EMAIL - 40 символів.
на поле KEY_COUNTRY - 2 символи
ВАЖЛИВО
Зверніть увагу, якщо у вас відсутній підкаталог keys або він порожній, без будь-яких файлів (якщо ви ключі ще не генерували) то обов'язково виконання скріплю ./clean-all
Він робить два дії
- Видаляє всі з цього каталогу. Обережно! Він не питає підтвердження
- Створює в цьому підкаталозі два файли
keys / index.txt - порожній
keys / serial - які містить один рядок 01 це буде серійний номер першого підписаного ключа.
Без цього при генерації серверних і клієнтських ключів ви отримаєте помилки:
Генерація свого Certification Authoriry
Генерація свого власного Certification Authoriry скорочено (CA) виконується за допомогою скрипта build-ca.
Хочу попередити, що не варто запускати ці скрипти з під mc (Midnight Commander) тому що змінні з скрипта vars загубляться до запуску наступного скрипта. Запускайте все з чистого shell.
Генерація ключа сервера і підписання його своїм CA
Ключ Diffie Hellman
Diffie Hellman ключ служить для обміну ключами між клієнтом і сервером. Він ні від чого не залежить генерується абсолютно автономно, з конфігов використовує тільки шлях до вихідний папці і довжину ключа.
У зв'язку з тим що я встановив розмір ключа 2048 біт генерація Diffie Hellman ключа буде йти довго.
Я не став цитувати повний екран так як в цьому мало сенсу.
Генерація необхідної кількості ключів для клієнтів.
Мені потрібно 3 ключа для 3-х VPN клієнтів. Дія повторю 3 рази міняючи тільки ім'я передається скрипту
І наостанок зробимо останній ключик для сервера і клієнта. Він не обов'язковий, але його призначення запобігати
перейдемо в каталог з ключами і запустимо таку команду (машина де вона запускається повинна мати встановлений openvpn
Вибираємо файли які потрібно скопіювати на сервер, а які на клієнтів
Отже ключі згенеровані. Після генерації TA ключа ми залишилися в каталозі keys.
Ой! У недосвідченого користувача просто дух захопить від цієї кількості файлів. Що ж вибрати?
Все просто для сервера вибираємо ключі:
ca.crt
dh2048.pem
ta.key
my-personal-vpn-server.crt
my-personal-vpn-server.key
Для клієнта client1
ca.crt
ta.key
my-personal-vpn-client1.crt
my-personal-vpn-client1.key
І так далі…
Щоб розставити всі крапки над I приведу табличку як це було на сайті OpenVPN.