ГОСТ IKEv2 с сертификатами X.509: настройка¶
Этот профиль использует индивидуальные сертификаты и подпись ГОСТ-512, один доверенный CA и обязательную проверку CRL. До начала выполните выдачу и убедитесь, что на обеих VM есть ca.der и ca.pem, собственный left.der/right.der, собственный node-key.der и свежая current.der.
1. Установить credentials¶
Узел А (192.168.10.15):
D=/root/niceos-ike-node
install -m 644 "$D/ca.der" /etc/swanctl/x509ca/niceos-ike-ca.der
install -m 644 "$D/left.der" /etc/swanctl/x509/niceos-ike-node.der
install -m 600 "$D/node-key.der" /etc/swanctl/private/niceos-ike-node.der
install -m 644 "$D/current.der" /etc/swanctl/x509crl/niceos-ike-current.der
Узел Б (192.168.10.26):
D=/root/niceos-ike-node
install -m 644 "$D/ca.der" /etc/swanctl/x509ca/niceos-ike-ca.der
install -m 644 "$D/right.der" /etc/swanctl/x509/niceos-ike-node.der
install -m 600 "$D/node-key.der" /etc/swanctl/private/niceos-ike-node.der
install -m 644 "$D/current.der" /etc/swanctl/x509crl/niceos-ike-current.der
После копирования проверьте закрытый ключ: stat -c '%a %n' /etc/swanctl/private/niceos-ike-node.der → 600. Сертификат и ключ должны образовывать пару; при неверной паре IKE_AUTH не состоится.
2. Подготовить зеркальную конфигурацию¶
Следующий блок выполните на обеих VM. Используется только отдельный файл нового профиля, без перезаписи базовой конфигурации.
bash <<'SH'
set -euo pipefail
umask 077
IP=$(ip -4 -o addr show dev eth0 | awk 'NR==1{split($4,a,"/");print a[1]}')
case "$IP" in
192.168.10.15) PEER=192.168.10.26; ME=left; HIM=right; LTS=10.200.1.1; RTS=10.200.2.1 ;;
192.168.10.26) PEER=192.168.10.15; ME=right; HIM=left; LTS=10.200.2.1; RTS=10.200.1.1 ;;
*) echo 'STOP: неизвестный IP'; exit 1 ;;
esac
FILE=/etc/swanctl/conf.d/niceos-gost-x509.conf
test ! -e "$FILE" || { echo 'STOP: профиль уже существует'; exit 1; }
cat > "$FILE" <<EOF
connections {
gost-x509 {
version = 2
local_addrs = $IP
remote_addrs = $PEER
proposals = kuznyechikmgmktree-prfstreebog512-gost512
encap = yes
mobike = no
fragmentation = yes
reauth_time = 0
rekey_time = 1h
dpd_delay = 30s
local {
auth = pubkey
id = @niceos-$ME
certs = niceos-ike-node.der
}
remote {
auth = pubkey
id = @niceos-$HIM
cacerts = niceos-ike-ca.der
revocation = strict
}
children {
gost-x509 {
local_ts = $LTS/32
remote_ts = $RTS/32
esp_proposals = kuznyechikmgmktree-gost512
start_action = none
close_action = none
dpd_action = clear
rekey_time = 30m
life_time = 40m
}
}
}
}
EOF
chmod 600 "$FILE"
echo "PASS: X.509 профиль создан для $IP"
SH
Проверенный IKE ID @niceos-right соответствует DNS:niceos-right в SAN; @niceos-left — соответственно левой VM. Не подставляйте произвольный ID без отражения в сертификате.
3. Загрузить credentials и подключения¶
На обеих VM:
swanctl --load-creds --clear
swanctl --load-conns
swanctl --list-conns
swanctl --list-certs --type x509_crl
В выводе нужны loaded GOST512 key, правильный CA и CRL с 0 revoked certificates для исходной лабораторной PKI. Если работает PSK-профиль, сначала безопасно завершите его, чтобы он не скрывал проблемы X.509. Миграция.
4. Установить X.509 VPN¶
На узле А:
На узле Б:
Ожидаемые сообщения: authentication ... with GOST512 successful, crl correctly signed, certificate status is good, IKE_SA ... established, CHILD_SA ... established. Не пропускайте revocation = strict ради устранения ошибок: сначала исправьте PKI, CRL или HTTPS-доступность.
5. Жизненный цикл¶
Регулярно контролируйте срок сертификатов и CRL, доверие CA, доставку CRL и отзыв при компрометации. Управление отзывом · HTTPS-CRL · Эксплуатация.