Практическая работа
План работ
- Ключи для работы с ssh
- Создание ключа
- Внесение ключа в список доверенных на сервере
- Проверка
- Запуск центра сертификации своими руками
- Подготовка нужных файлов, каталогов, конфигурации
- Генерация корневого сертификата
- Генерация промежуточного (подписывающего) сертификата
- Cоздаём сертификаты - использование CA
- Проверка
- Запуск OpenVPN c аутентификацией по ключам
- Подготовка конфигурации сервера
- Создание сертификата для клиентов
- Подготовка файла конфигурации клиента
- Запуск и проверка сервиса
Дополнительные условия
- Создание центра сертификации и запуск сервера OpenVPN производим на тестовом сервере demo-vm.sac.kopmans.com в своём домашнем каталоге
- Порт на котором должен слушать OpenVPN: 10000 + ваш uid
- На сервере добавлен внутренний интерфейс dummy0, с приватной сетью. Запущен веб сервер nginx, доступный только на приватном IP адресе. Критерий проверки OpenVPN: подключившись к VPN, вы должны смочь открыть веб страницу на этом IP адресе.
Последовательность действий
- Ключи для работы с ssh
- Создание ключа
- Windows
- Cкачиваем puttygen.exe
- Запускаем и создаём RSA, 2048 бит
- Сохраняем публичный и приватный ключи, а так же копируем публичный ключ в формате пригодном для OpenSSH в буфер обмена. (!) При сохранении указываем формат версии 2, не 3
- Linux
ssh-keygen -f demo_rsaи копируем содержимое ключа в буфер обмена
cat demo_rsa.pub
- Windows
- Внесение ключа в список доверенных на сервере
- Подключаемся к серверу по ssh
- Создаём каталог .ssh в своём домашнем каталоге (если ещё не создан)
- Вносим cкопированный публичный ключ в файл ~/.ssh/authorized_keys
- Устанавливаем верные права на .ssh и authorized_keys
chmod 700 .ssh ; chmod 400 .ssh/authorized_keys
- Если вы пользуетесь Linux, все выше перечисленные шаги можно заменить одной командой:
ssh-copy-id -i demo_rsa.pub your_user@demo-vm.sac.kopmans.com
- Проверка
- Windows
- Запускаем PuTTY.exe
- Cоздаём новую сессию, hostname your_user@demo-vm.sac.kopmans.com, и в настройках Connection->SSH->Auth загружаем приватный ключ. Сохраняем под каким-то именем.
- Жмём Open, убеждаемся что удаётся зайти.
- Linux
ssh -i demo_rsa your_user@demo-vm.sac.kopmans.com
- Windows
- Создание ключа
- Запуск центра сертификации своими руками
- Подготовка нужных файлов, каталогов, конфигурации
создаём файлы и каталоги для корневого CA:# каталогии то же самое для промежуточного подписывающего CA:
mkdir -p ca/etc ca/root-ca/private ca/root-ca/db ca/crl ca/certs
chmod 700 ca/root-ca/private
# и файлы
cp /dev/null ca/root-ca/db/root-ca.db
cp /dev/null ca/root-ca/db/root-ca.db.attr
echo 01 > ca/root-ca/db/root-ca.crt.srl
echo 01 > ca/root-ca/db/root-ca.crl.srl
mkdir -p ca/signing-ca/private ca/signing-ca/dbи конфигурационныe файлы etc/root-ca.conf:
chmod 700 ca/signing-ca/private
cp /dev/null ca/signing-ca/db/signing-ca.db
cp /dev/null ca/signing-ca/db/signing-ca.db.attr
echo 01 > ca/signing-ca/db/signing-ca.crt.srl
echo 01 > ca/signing-ca/db/signing-ca.crl.srl
# конфигурация для корневого CA
wget -O ca/etc/root-ca.conf http://ik.academy.lv/root_ca.conf
# конфигурация для промежуточного CA
wget -O ca/etc/signing-ca.conf http://ik.academy.lv/signing_ca.conf
# настройки по умолчанию для клиентских сертификатов
wget -O ca/etc/clients.conf http://ik.academy.lv/clients.conf
- Генерация корневого сертификата и ключей:
# cоздаём запрос на сертификат
openssl req -new -config ca/etc/root-ca.conf -out ca/root-ca.csr -keyout ca/root-ca/private/root-ca.key
# подписываем (создаём) корневой сертификат
openssl ca -selfsign -config ca/etc/root-ca.conf -in ca/root-ca.csr -out ca/root-ca.crt -extensions root_ca_ext
- Генерация промежуточного (подписывающего) сертификата
- Cоздаём сертификаты - использование CA
# cоздаём приватный ключ и запрос
openssl req -new -config ca/etc/clients.conf -out ca/certs/test.csr -keyout ca/certs/test.key
# подписываем с помощью промежуточного CA
openssl ca -config ca/etc/signing-ca.conf -in ca/certs/test.csr -out ca/certs/test.crt
- Проверка
openssl x509 -in ca/certs/test.crt -textи внимательно смотрим
# cоздаём запрос на сертификат
openssl req -new -config ca/etc/signing-ca.conf -out ca/signing-ca.csr -keyout ca/signing-ca/private/signing-ca.key
# подписываем (создаём) сертификат ключём корневого CA
openssl ca -config ca/etc/root-ca.conf -in ca/signing-ca.csr -out ca/signing-ca.crt -extensions signing_ca_ext
- Подготовка нужных файлов, каталогов, конфигурации
- Запуск OpenVPN c аутентификацией по ключам
- Подготовка конфигурации сервера
- Cоздаём каталог vpn в своём домашнем каталоге.
- Cоздаём новый сертификат и приватный ключ, с названием 'server' (см. выше) и копируем их в каталог vpn
# cоздаём приватный ключ и запрос
openssl req -new -config ca/etc/clients.conf -out ca/certs/server.csr -keyout ca/certs/server.key
# подписываем с помощью промежуточного CA
openssl ca -config ca/etc/signing-ca.conf -in ca/certs/server.csr -out ca/certs/server.crt
# копируем
cp ca/certs/server.crt ca/certs/server.key vpn/ - Создаём файл с цепочкой сертификации
cat ca/signing-ca.crt caa/root-ca.crt > vpn/fullchain.crt
- Создаём файл с начальным ключём для DH и кладём туда же
openssl dhparam -out vpn/dh2048.pem 2048
- Создаём в каталоге vpn файл openvpn_server.conf:
proto tcp-server
port 12001
keepalive 10 60
tls-server
remote-cert-eku "TLS Web Client Authentication"
key server.key
cert server.crt
ca fullchain.crt
dh dh2048.pem
cipher AES-256-CBC
dev tun
topology subnet
server 10.8.0.0 255.255.255.0
push "route 10.10.10.0 255.255.255.0"
- Запускаем сервер для проверки конфигурации
cd ~/vpn ; sudo /usr/sbin/openvpn --config openvpn_server.confи если всё в порядке, пока что останавливаем нажав CTRL-C
- Создание конфигурации для клиентcкой стороны
- Cоздаём каталог client в своём домашнем каталоге.
- Cоздаём новый сертификат и приватный ключ, с названием 'client' (см. выше) и копируем их в каталог client
# cоздаём приватный ключ и запрос
openssl req -new -config ca/etc/clients.conf -out ca/certs/client.csr -keyout ca/certs/client.key
# подписываем с помощью промежуточного CA
openssl ca -config ca/etc/signing-ca.conf -in ca/certs/client.csr -out ca/certs/client.crt
# копируем
cp ca/certs/client.crt ca/certs/client.key client/ - Копируем туда же файл fullchain.crt cозданный ранее для сервера
- Создаём в каталоге client файл openvpn_client.conf:
proto tcp-client
port 12001
remote demo-vm.sac.kopmans.com
keepalive 10 60
tls-client
remote-cert-eku "TLS Web Server Authentication"
key client.key
cert client.crt
ca fullchain.crt
cipher AES-256-CBC
dev tun
topology subnet
pull
- Копируем каталог client на клиентскую сторону
- Запуск и проверка сервиса
- Снова запускаем openvpn на сервере (cм. выше)
- Запускаем клиент на Linux
-
Устанавливаем openvpn
apt install openvpn
- Переходим в перенесённый каталог client и запускаем
sudo openvpn --config openvpn_client.conf
-
Устанавливаем openvpn
- Запускаем клиент на Windows
- Cкачиваем OpenVPN-2.5.2-I601-amd*.msi
- Устанавливаем, запускаем с правами администратора.
- В каталоге client перенесённом с сервера переименовываем файл openvpn_client.conf в client.ovpn
- В трее находим OpenVPN GUI и импортируем конфигурацию (находим и выбираем файл client.ovpn)
- Там же в OpenVPN GUI выбираем "редактировать конфигурацию" и правим конфигурацию: заменяем все пути к файлам на абсолютные (слеши двойные!).
Напримерkey C:\\Temp\\client\\client.key - Пробуем подключиться. Смотрим за процессом чезер пункт меню Status, если что-то пошло не так - смотрим логи
- И наконец в браузере заходим на http://10.10.10.10
- Подготовка конфигурации сервера