Структура /etc/swanctl и настройка CA, сертификатов и CRL в strongSwan
В предыдущей статье мы рассмотрели, почему swanctl является предпочтительным способом управления strongSwan. В этой части разберём структуру каталогов /etc/swanctl и базовые принципы настройки центра сертификации (CA), сертификатов и списков отзыва (CRL).
Структура каталогов /etc/swanctl
При использовании swanctl strongSwan следует строгой и предсказуемой структуре каталогов. По умолчанию все файлы располагаются в /etc/swanctl.
/etc/swanctl/
├── swanctl.conf
├── x509ca/
├── x509/
├── private/
└── x509crl/
Рассмотрим назначение каждого элемента.
swanctl.conf
Основной конфигурационный файл swanctl.
В нём описываются:
- VPN-соединения (
connections) - центры сертификации (
authorities) - секреты (
secrets) - пулы адресов (
pools)
Файл читается утилитой swanctl и может быть загружен в работающий демон без его перезапуска.
x509ca/ — сертификаты центров сертификации
Каталог для сертификатов CA (Root и Intermediate).
/etc/swanctl/x509ca/
└── ca-cert.pem
- Содержит публичные сертификаты CA
- Используется для проверки цепочки доверия
- Закрытые ключи CA здесь не хранятся
x509/ — сертификаты узлов
Каталог для сертификатов:
- VPN-сервера
- клиентов
- site-to-site peer’ов
/etc/swanctl/x509/
├── vpn-server-cert.pem
└── vpn-client-cert.pem
Это публичные сертификаты, соответствующие закрытым ключам из private/.
private/ — закрытые ключи
Каталог для закрытых ключей:
/etc/swanctl/private/
├── vpn-server-key.pem
└── vpn-client-key.pem
⚠️ Важно:
- Права доступа должны быть ограничены (600)
- Файлы читаются только пользователем root
- Закрытые ключи CA обычно хранятся вне этого каталога (офлайн)
x509crl/ — списки отзыва сертификатов (CRL)
Каталог для Certificate Revocation List:
/etc/swanctl/x509crl/
└── ca-crl.pem
CRL используется strongSwan для проверки:
- не был ли сертификат отозван
- действителен ли он на момент установки соединения
Настройка CA, сертификатов и CRL — общие принципы
Центр сертификации (CA)
В контексте strongSwan:
- CA используется для подписания серверных и клиентских сертификатов
- strongSwan доверяет CA, сертификат которого указан в x509ca/
Минимальный набор:
- CA certificate → /etc/swanctl/x509ca/
- CA CRL → /etc/swanctl/x509crl/
Сертификаты сервера и клиентов
Для VPN обычно используются:
- сертификат сервера (IKE responder)
- сертификаты клиентов или peer’ов
Требования:
Key UsageиExtended Key Usageдолжны соответствовать IKE- CN или SAN должны совпадать с настройками
swanctl.conf
Размещение:
- сертификаты →
x509/ - закрытые ключи →
private/
CRL (Certificate Revocation List)
CRL — обязательный элемент при строгой PKI-модели.
strongSwan:
- поддерживает проверку CRL
- загружает CRL через swanctl
- может проверять срок действия CRL и серийные номера отозванных сертификатов
CRL-файл:
- должен быть в формате PEM
- подписан тем же CA, которому доверяет strongSwan
Размещение:
/etc/swanctl/x509crl/ca-crl.pem
Подготовка окружения
Установим необходимые пакеты:
sudo apt update
sudo apt install -y strongswan-pki
Создадим рабочую директорию:
mkdir -p ~/pki/{ca,server,crl}
cd ~/pki
Создание центра сертификации (CA)
Генерация закрытого ключа CA
pki --gen --type rsa --size 4096 --outform pem > ca/ca-key.pem
chmod 600 ca/ca-key.pem
Создание самоподписанного сертификата CA
pki --self \
--ca \
--lifetime 3650 \
--in ca/ca-key.pem \
--type rsa \
--dn "CN=VPN Root CA" \
--outform pem > ca/ca-cert.pem
Результат:
ca-key.pem— закрытый ключ CAca-cert.pem— публичный сертификат CA
📌 В strongSwan сервер копируется только ca-cert.pem
Генерация сертификата VPN-сервера
Генерация закрытого ключа сервера
pki --gen --type rsa --size 4096 --outform pem > server/server-key.pem
chmod 600 server/server-key.pem
Создание серверного сертификата
pki --pub --in server/server-key.pem --type rsa | \
pki --issue --lifetime 1825 \
--cacert ca/ca-cert.pem \
--cakey ca/ca-key.pem \
--dn "C=US, O=My Company, CN=vpn.example.com" \
--san vpn.example.com \
--san @vpn.example.com \
--flag serverAuth --flag ikeIntermediate \
--outform pem > server/server-cert.pem
Флаги:
serverAuth— разрешает использование в роли сервераikeIntermediate— рекомендуется для IKEv2
Создание Certificate Revocation List (CRL)
Генерация CRL
pki --signcrl \
--cacert ca/ca-cert.pem \
--cakey ca/ca-key.pem \
--lifetime 30 \
--outform pem > crl/ca-crl.pem
Параметры:
--lifetime 30— CRL действителен 30 дней- CRL должен регулярно обновляться
Размещение файлов на VPN-сервере
Скопируйте файлы в /etc/swanctl:
/etc/swanctl/
├── x509ca/
│ └── ca-cert.pem
├── x509/
│ └── server-cert.pem
├── private/
│ └── server-key.pem
└── x509crl/
└── ca-crl.pem
Права доступа:
chmod 600 /etc/swanctl/private/server-key.pem
chmod 644 /etc/swanctl/x509/*.pem
chmod 644 /etc/swanctl/x509ca/*.pem
chmod 644 /etc/swanctl/x509crl/*.pem
Что дальше?
- Настройка подключения с аутентификацией по EAP-MSCHAPV2
- Настройка подключения с аутентификацией по EAP-TLS
- Настройка подключения с аутентификацией по как по EAP-TLS, так и EAP-MSCHAPV2.
Комментарии
Оставить комментарий могут только зарегистрированные пользователи.
Войдите на сайт или зарегистрируйтесь, чтобы оставить комментарий.