В предыдущей статье мы рассмотрели, почему swanctl является предпочтительным способом управления strongSwan. В этой части разберём структуру каталогов /etc/swanctl и базовые принципы настройки центра сертификации (CA), сертификатов и списков отзыва (CRL).
/etc/swanctlПри использовании swanctl strongSwan следует строгой и предсказуемой структуре каталогов. По умолчанию все файлы располагаются в /etc/swanctl.
/etc/swanctl/
├── swanctl.conf
├── x509ca/
├── x509/
├── private/
└── x509crl/
Рассмотрим назначение каждого элемента.
swanctl.conf
Основной конфигурационный файл swanctl.
В нём описываются:
connections)authorities)secrets)pools)Файл читается утилитой swanctl и может быть загружен в работающий демон без его перезапуска.
x509ca/ — сертификаты центров сертификации
Каталог для сертификатов CA (Root и Intermediate).
/etc/swanctl/x509ca/
└── ca-cert.pem
x509/ — сертификаты узлов
Каталог для сертификатов:
/etc/swanctl/x509/
├── vpn-server-cert.pem
└── vpn-client-cert.pem
Это публичные сертификаты, соответствующие закрытым ключам из private/.
private/ — закрытые ключи
Каталог для закрытых ключей:
/etc/swanctl/private/
├── vpn-server-key.pem
└── vpn-client-key.pem
⚠️ Важно:
x509crl/ — списки отзыва сертификатов (CRL)
Каталог для Certificate Revocation List:
/etc/swanctl/x509crl/
└── ca-crl.pem
CRL используется strongSwan для проверки:
В контексте strongSwan:
Минимальный набор:
Для VPN обычно используются:
Требования:
Key Usage и Extended Key Usage должны соответствовать IKEswanctl.confРазмещение:
x509/private/CRL (Certificate Revocation List)
CRL — обязательный элемент при строгой PKI-модели.
strongSwan:
CRL-файл:
Размещение:
/etc/swanctl/x509crl/ca-crl.pem
Установим необходимые пакеты:
sudo apt update
sudo apt install -y strongswan-pki
Создадим рабочую директорию:
mkdir -p ~/pki/{ca,server,crl}
cd ~/pki
Генерация закрытого ключа 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
Генерация закрытого ключа сервера
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 | \
strongswan 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Генерация 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 днейСкопируйте файлы в /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