Подробный гайд: Диагностика SSSD, если он не видит сертификаты на РуТокен ЭЦП 3.0 NFC - Часть 2

Подробный гайд по диагностике SSSD, если он не видит сертификаты на РуТокен ЭЦП 3.0 NFC. Разбор p11_uri, настройки PAM, логов и поддержки ГОСТ.

2026.10.19                  


Подробный гайд: Диагностика SSSD, если он не видит сертификаты на РуТокен ЭЦП 3.0 NFC - Часть 2Подробный гайд: Диагностика SSSD, если он не видит сертификаты на РуТокен ЭЦП 3.0 NFC - Часть 2

6. Отдельная важная история: ГОСТ-сертификат

РуТокен ЭЦП 3.0 NFC часто используется с российскими ГОСТ-сертификатами. Это критично. Если на РуТокен ЭЦП 2.0 был сертификат RSA/EC, а на РуТокен ЭЦП 3.0 NFC вы записали ГОСТ-сертификат, то проблема может быть не в токене, а в том, что стек аутентификации не работает с ГОСТ.


Проверьте, какой алгоритм у сертификата. Сначала выгрузите сертификат с токена.




Посмотрите список:

pkcs11-tool --module "$MOD" --login --pin 'ВАШ_PIN' --list-objects --type cert

Например, если ID: 01, выгрузите:

pkcs11-tool --module "$MOD" --login --pin 'ВАШ_PIN' \
  --read-object --type cert --id 01 --output-file /tmp/token-cert.der

Преобразуйте в PEM:

openssl x509 -inform DER -in /tmp/token-cert.der -out /tmp/token-cert.pem

Посмотрите содержимое:

openssl x509 -in /tmp/token-cert.pem -noout -text

Вас интересуют строки:

Signature Algorithm: ...
Public Key Algorithm: ...
X509v3 Extended Key Usage: ...

Если там что-то вроде:

Signature Algorithm: GOST R 34.10-2012 with GOST R 34.11-2012
Public Key Algorithm: GOST R 34.10-2012

то очень вероятно, что именно в этом причина.

Почему:

  1. OpenSSL в дистрибутиве может не иметь полноценной поддержки ГОСТ.
  2. Даже если OpenSSL формически видит сертификат, Kerberos PKINIT для AD обычно ожидает RSA/EC-сертификаты, а не ГОСТ.
  3. SSSD может отбрасывать сертификат, если не может проверить цепочку или использовать механизм подписи.
  4. РуТокен ЭЦП 2.0 у вас мог работать, потому что там был не ГОСТ-сертификат, а совместимый RSA/EC.

Что делать

Если вам нужна именно аутентификация в AD через SSSD/Kerberos PKINIT, используйте тестовый сертификат RSA или EC, например:

Signature Algorithm: sha256WithRSAEncryption
Public Key Algorithm: rsaEncryption

или:

Signature Algorithm: ecdsa-with-SHA256
Public Key Algorithm: id-ecPublicKey

Если ГОСТ обязателен для других целей, это не значит, что тот же сертификат можно использовать для входа через SSSD/AD PKINIT. Это разные сценарии.


7. Проверка цепочки доверия

У вас:

pam_cert_db_path = /etc/ssl/certs/ca-certificates.crt

Это нормально для OpenSSL-варианта SSSD, если это файл с доверенными CA.

Проверьте сертификат:

openssl verify -CAfile /etc/ssl/certs/ca-certificates.crt /tmp/token-cert.pem

Если нужно проверить назначение клиентской аутентификации:

openssl verify -purpose sslclient -CAfile /etc/ssl/certs/ca-certificates.crt /tmp/token-cert.pem

Если проверка не проходит:

  1. Добавьте корневой и промежуточные CA в систему.
  2. Выполните:
update-ca-certificates
  1. Убедитесь, что сертификат не просрочен.
  2. Проверьте Extended Key Usage.

Для входа по смарт-карте желательно, чтобы в сертификате был один из назначений:

TLS Web Client Authentication

или Microsoft Smart Card Logon:

Smart Card Logon

8. Проверка p11-kit и модуля РуТокен

Посмотрите зарегистрированные модули:

p11-kit list-modules

В списке должен быть модуль РуТокен, например:

librtpkcs11ecp.so

Если его нет, создайте файл модуля.

Сначала найдите библиотеку:

MOD=$(find /usr/lib /lib -name 'librtpkcs11ecp.so*' 2>/dev/null | head -n1)
echo "$MOD"

Создайте файл для p11-kit:

cat > /etc/pkcs11/modules/librtpkcs11ecp.module <<EOF
module: $MOD
EOF
chmod 644 /etc/pkcs11/modules/librtpkcs11ecp.module

Перезапустите сервисы:

systemctl restart pcscd
systemctl restart sssd

Снова проверьте:

p11-kit list-tokens

9. Если мешает модуль OpenSC

Иногда в системе одновременно установлены:

  • родной модуль РуТокен librtpkcs11ecp.so;
  • модуль OpenSC opensc-pkcs11.so.

SSSD через p11-kit может видеть токен через OpenSC, но сертификаты или ключи при этом не читает нормально, особенно если речь о ГОСТ или специфичных объектах РуТокен.


Проверьте модули:

p11-kit list-modules

Если там есть opensc, можно временно, только для диагностики, убрать его:

mkdir -p /root/p11-backup
mv /usr/share/p11-kit/modules/opensc* /root/p11-backup/ 2>/dev/null || true
mv /etc/pkcs11/modules/opensc* /root/p11-backup/ 2>/dev/null || true


Затем:

systemctl restart pcscd
systemctl restart sssd

Если после этого токен заработал, значит проблема была в конфликте модулей. Потом либо верните OpenSC, если он нужен другим приложениям, либо настройте приоритеты/исключения так, чтобы для РуТокен использовался родной модуль.


10. Что смотреть в логах SSSD

У вас уже включён высокий уровень отладки:

debug_level=10

Перезапустите сервис и повторите попытку входа:

systemctl restart sssd

Смотрите:

grep -R "p11_child\|certificate\|PKCS#11\|cert" /var/log/sssd/

Или:

tail -f /var/log/sssd/sssd_pam.log

Также полезно:

journalctl -u sssd --since "10 minutes ago"

Типичные диагностические признаки:

Сообщение/поведение в логах Вероятная причина
no matching token не совпадает p11_uri
No certificates found сертификат невидим, не загружен, закрыт, не совпадает фильтр
certificate verification failed нет цепочки доверия, истёк сертификат, неверный pam_cert_db_path
no private key found нет ключа, другой CKA_ID, ключ недоступен пользователю
C_Login failed неверный PIN, токен заблокирован
CKR_TOKEN_NOT_PRESENT проблема с pcscd, USB, CCID, драйвером
unsupported algorithm / ошибки парсинга ГОСТ или неподдерживаемый алгоритм
сертификат найден, но пользователь не найден проблема маппинга сертификата на AD-объект

Информация предоставлена в ознакомительных целях. Применение описанных настроек в системах, должно осуществляться только после согласования с ответственными за информационную безопасность и в соответствии с требованиями ФСТЭК, ФСБ и иных уполномоченных органов.


Статью подготовил: Аверко Денис Сергеевич @Nymexis г. Омск (специалист по ЗИ)

Комментарии

Загрузка...
Если комментарии не загружаются, можете попробовать отключить блокировщик рекламы для этого сайта