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

Отрицательные проверки X.509 и CRL

Эти тесты временно разрывают VPN. Проводите их только на отдельных VM или в согласованное окно, с сохранением CRL и ключей. После каждого теста верните работающую конфигурацию и проверьте данные.

Нет CRL при строгой проверке

На тестовом узле А:

swanctl --terminate --ike gost-x509
install -d -m 700 /root/ike-negative
mv /etc/swanctl/x509crl/niceos-ike-current.der /root/ike-negative/crl.saved.der
swanctl --load-creds --clear
swanctl --list-certs --type x509_crl
swanctl --initiate --child gost-x509   # ОЖИДАЕМ ОТКАЗ
swanctl --list-sas                    # пусто

В реальных испытаниях:

certificate status is not available
constraint check failed: RULE_CRL_VALIDATION is SKIPPED, but requires at least GOOD
initiate failed

Восстановление:

mv /root/ike-negative/crl.saved.der /etc/swanctl/x509crl/niceos-ike-current.der
swanctl --load-creds --clear
swanctl --initiate --child gost-x509

Не запускайте тест, пока имя и наличие текущей CRL не проверены. Если команда прервана, сначала верните резервный файл.

Действительно отозванный сертификат

В контрольном испытании создан дополнительный сертификат правой VM, до отзыва успешно прошёл IKE_AUTH и передачу 10/10. Затем CA зарегистрировал отзыв keyCompromise в новой CRL №0x1002. Системный charon написал:

crl correctly signed by "CN=NiceOS-RPM-Test-GOST-CA"
certificate was revoked ..., reason: key compromise
no trusted GOST512 public key found for 'niceos-right'
initiate failed

Для воспроизведения создайте отдельную тестовую ключевую пару/сертификат с новым serial и допустимым SAN. Сначала докажите, что с ней VPN устанавливается, после чего выполняйте отзыв через openssl ca -revoke и перевыпуск CRL. Не отзывайте для теста текущий рабочий сертификат и не подменяйте действительную CRL старой, чтобы имитировать «восстановление».

Ошибка HTTPS при отсутствии локальной CRL

На VM2 с конфигурацией crl_uris в лаборатории разрешено временно заблокировать единственный тестовый порт:

iptables -I OUTPUT 1 -d 192.168.10.15 -p tcp --dport 18444 -j REJECT
# После удаления локальной CRL и swanctl --load-creds --clear:
swanctl --initiate --child gost-x509   # ОЖИДАЕМ ОТКАЗ
swanctl --list-sas
iptables -D OUTPUT -d 192.168.10.15 -p tcp --dport 18444 -j REJECT

Нужно видеть fetching crl, libcurl request failed [7], crl fetching failed, RULE_CRL_VALIDATION is FAILED, but requires at least GOOD, пустую SA. Затем вернуть CRL и проверить повторное подключение (10/10). Держите доступ к консоли и не блокируйте TCP/22.

Дополнительные проверки, пока не подтверждённые

Повреждённая подпись, TLS hostname mismatch, просроченная CRL, откат номера CRL, OCSP, CA rotation, динамическое переиздание при массовом разрыве — самостоятельная программа испытаний. Отдельный раздел ограничений не допускает объявлять их PASS заранее.