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

ГОСТ CRL: выпуск, проверка, отзыв и строгая политика

CRL (Certificate Revocation List) — подписанный удостоверяющим центром перечень отозванных сертификатов. revocation = strict требует положительного подтверждения статуса удалённого сертификата при новом IKE_AUTH. Если нет пригодной CRL и не удалось получить актуальную информацию, соединение отклоняется; при отзыве — также отклоняется.

1. Проверить существующую CRL

На узле с OpenSSL ГОСТ Engine:

export OPENSSL_CONF=/etc/pki/niceos-gost/engine.cnf
openssl crl -inform DER -in /etc/swanctl/x509crl/niceos-ike-current.der \
  -CAfile /root/niceos-ike-node/ca.pem -verify -noout -crlnumber -nextupdate
swanctl --list-certs --type x509_crl

В системном charon видны issuer, nextUpdate, номер списка, количество и серийные номера отозванных сертификатов. Список без отозванных сертификатов — нормальная начальная ситуация; отсутствие списка — не то же самое.

2. Выпустить новую CRL на машине УЦ

D=/root/niceos-ike-ca
export OPENSSL_CONF=/etc/pki/niceos-gost/engine.cnf
openssl ca -config "$D/ca.cnf" -gencrl -batch -out "$D/current.pem"
openssl crl -in "$D/current.pem" -outform DER -out "$D/current.der"
openssl crl -inform DER -in "$D/current.der" \
  -CAfile "$D/ca.pem" -verify -noout -crlnumber -nextupdate

Номер CRL растёт при очередном выпуске (при начальном crlnumber=1000 первый будет 0x1000). Распространяйте одинаковую, подписанную CRL на оба узла. Устанавливайте её атомарно в целевой путь: сначала загрузка/проверка временного файла, затем переименование. Для проверки строгости не подменяйте списки более старыми версиями.

3. Отозвать сертификат после компрометации

Проводить только в учебной PKI или по регламенту продуктивного УЦ. На CA:

D=/root/niceos-ike-ca
export OPENSSL_CONF=/etc/pki/niceos-gost/engine.cnf
# Подставьте действительный сертификат, который действительно требуется отозвать:
openssl ca -config "$D/ca.cnf" -revoke "$D/right.pem" \
  -crl_reason keyCompromise -batch
openssl ca -config "$D/ca.cnf" -gencrl -batch -out "$D/current.pem"
openssl crl -in "$D/current.pem" -outform DER -out "$D/current.der"
openssl crl -in "$D/current.pem" -text -noout | grep -A 12 'Revoked Certificates'

Отзыв является реальным действием и не отменяется откатом файла CRL. Для непрерывности сервиса выпустите новый сертификат с новым ключом, проверьте цепочку и подпись, затем распространите CRL. На стенде реально проверялся отзыв отдельного временного сертификата, чтобы основной рабочий сертификат оставался действительным.

4. Загрузить новую CRL на узлах

После проверки CA подписи и актуальности:

install -m 644 current.der /etc/swanctl/x509crl/niceos-ike-current.der
swanctl --load-creds --clear
swanctl --list-certs --type x509_crl

Если на узле несколько IPsec-туннелей, --clear перечитывает их общие credentials — предварительно проверьте совместимость и запланируйте окно обслуживания. Существующая SA не обязана завершиться немедленно из-за обновления CRL. Для проверки запрета создайте новую IKE SA:

swanctl --terminate --ike gost-x509
swanctl --initiate --child gost-x509

5. Реально проверенные отрицательные ситуации

На системном RPM от 26.10.2026 при удалённой CRL получено RULE_CRL_VALIDATION is SKIPPED, but requires at least GOOD; при отозванном временном сертификате — certificate was revoked ... key compromise и AUTH_FAILED. При заблокированном HTTPS и отсутствии локального файла получено RULE_CRL_VALIDATION is FAILED, but requires at least GOOD. Процедуры безопасного тестирования в негативных проверках.

6. Регламент

До nextUpdate обновляйте и публикуйте новую CRL; при истечении срока новая аутентификация в strict-режиме может отказать. Защитите закрытый ключ УЦ, регистрируйте номера CRL, учитывайте время на узлах и не публикуйте внутренние секреты в веб-каталоге. HTTPS-доставка · операции.