pkcs11_lib – Не удалось инициализировать NSS (неисправная база данных?)

Вопрос или проблема

У меня возникли проблемы с запуском PKCS#11 и PAM, по какой-то причине nss перестал работать, и я не могу создать новую базу данных.

Вот вывод из PKCS11 и NSS:

DEBUG:pkcs11_lib.c:187: Инициализация NSS ...
DEBUG:pkcs11_lib.c:197: Инициализация NSS ... database=/etc/pam_pkcs11/nssdb
DEBUG:pkcs11_lib.c:206: NSS_Initialize не удалось: (null)
ERROR:pam_pkcs11.c:250: Не удалось инициализировать криптографию

После проверки всех моих конфигураций и инструкций я погуглил и нашел это: certutil: функция завершилась неудачно: библиотека безопасности: плохая база данных

Это напомнило мне, что я, вероятно, никогда не создавал новую базу данных nss. (что, однако, я думал, делается автоматически?)

Но при попытке создать новую базу данных, я получаю следующее:

# certutil -d /etc/pam_pkcs11/nssdb -N
certutil: функция завершилась неудачно: SEC_ERROR_LEGACY_DATABASE: База данных сертификатов/ключей находится в старом, неподдерживаемом формате.

Итак, я провел небольшое расследование и попробовал:

# certutil -d sql:/etc/pam_pkcs11/nssdb -N
certutil: функция завершилась неудачно: SEC_ERROR_BAD_DATABASE: библиотека безопасности: плохая база данных.

Система: Fedora 21 (Это самая новая версия на данный момент)
NSS: nss-tools-3.20.1-1.0 + nss-3.20.1-1.0
PAM: pam_pkcs11-0.6.8-6
OpenSC: opensc-0.14.0-2
OpenSSL: openssl-1.0.1k-12
SqlLite: sqlite-3.8.11.1-1

Мне, наверное, стоит пойти домой и поесть или что-то в этом роде.

Забыл создать папку nssdb (да, это папка, а не файл.. что так четко указано на каждом форуме, который я нашел в процессе отладки).

Я должен был знать это.

# mkdir -p /etc/pam_pkcs11/nssdb
# chmod 700 /etc/pam_pkcs11/nssdb
# certutil -d /etc/pam_pkcs11/nssdb -N

Также обратите внимание, что при использовании NSS с PAM, особенно на старых системах.
Никогда не используйте базы данных nss стиля sql:.

Ответ или решение

Проблема, связанная с инициализацией NSS для PKCS#11 и PAM, является достаточно распространенной, особенно когда используются устаревшие или несовместимые форматы баз данных. В данном случае, ошибка, с которой столкнулся пользователь, заключается в неудачной инициализации NSS и создании новой базы данных, что вызывает невозможность работы криптографических операций. Рассмотрим эту проблему подробно.

Теория:

Network Security Services (NSS) — это библиотека, обеспечивающая поддержку криптографических операций и сертификатов. Она часто используется в сочетании с PKCS#11 для работы с аппаратными токенами и смарт-картами. Платформа аутентификации Pluggable Authentication Modules (PAM) часто используется для управления аутентификацией в Unix-подобных системах, в том числе с использованием смарт-карт.

Главная причина, вызывающая ошибки инициализации базы данных NSS, связана с устаревшими форматами базы данных или их несовместимостью с текущей версией NSS. Старые базы данных работали на формате dbm, который сейчас считается устаревшим и поддержка которого была прекращена в новых версиях NSS. Новый стандарт — формат sql.

Пример:

Возможные ошибки, которые могут возникать при инициализации NSS, такие как SEC_ERROR_LEGACY_DATABASE и SEC_ERROR_BAD_DATABASE, указывают на попытку использования неподдерживаемого или поврежденного формата базы данных. В процессе диагностики проблемы пользователь попытался создать новую базу данных, однако получил ошибку, так как не была создана необходимая директория /etc/pam_pkcs11/nssdb.

Рассмотрим стандартное решение этой проблемы на примере предоставленного журнала отладки:

  1. Создание необходимой структуры директорий для NSS:

    mkdir -p /etc/pam_pkcs11/nssdb
    chmod 700 /etc/pam_pkcs11/nssdb

    Здесь необходимо удостовериться в создании каталога с правами доступа, ограниченными только для владельца, что важно для безопасности криптографических материалов.

  2. Использование правильного синтаксиса для работы с базами данных NSS:

    Чтобы избежать проблемы устаревшего формата базы данных, необходимо использовать формат sql:

    certutil -d sql:/etc/pam_pkcs11/nssdb -N

    Однако в данном случае, ошибка могла произойти из-за несовместимости версии или других проблем в зависимости от требований приложения или среды.

  3. Избегайте использования формата sql: в старых версиях систем:

    Хотя направление использования sql является стандартным в современных системах, в старых системах или при специфических настройках PAM лучше обходить его стороной из-за возможности конфликта версий.

Применение:

Решая проблемы, связанные с инициализацией NSS и созданием новых баз данных PKCS#11, помните следующее:

  • Перед началом работы убедитесь, что все каталоги и файлы, требуемые для работы NSS, созданы, и права на них настроены безопасным образом.

  • Проверьте совместимость всех используемых приложений с текущими версиями NSS, учитывая разницу в поддержке форматов баз данных.

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

  • Обратите внимание на документацию и возможности NSS в зависимости от версии ОС и используемых модулей PAM и PKCS#11.

В случае возникновения аналогичных проблем, рекомендуется делать резервные копии существующих баз данных и конфигурационных файлов, обеспечивая возможность отката изменений. Такая осмотрительность позволит избежать сложных конфликтов и проблем с аутентификацией в будущих модификациях.

Оцените материал
Добавить комментарий

Капча загружается...