Перейти к содержанию

ГОСТ 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

На узле А:

swanctl --initiate --child gost-x509
swanctl --list-sas
ping -c 30 10.200.2.1

На узле Б:

swanctl --list-sas
ping -c 30 10.200.1.1

Ожидаемые сообщения: 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 · Эксплуатация.