Вопрос или проблема
У меня возникли проблемы с запуском 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
.
Рассмотрим стандартное решение этой проблемы на примере предоставленного журнала отладки:
-
Создание необходимой структуры директорий для NSS:
mkdir -p /etc/pam_pkcs11/nssdb chmod 700 /etc/pam_pkcs11/nssdb
Здесь необходимо удостовериться в создании каталога с правами доступа, ограниченными только для владельца, что важно для безопасности криптографических материалов.
-
Использование правильного синтаксиса для работы с базами данных NSS:
Чтобы избежать проблемы устаревшего формата базы данных, необходимо использовать формат
sql
:certutil -d sql:/etc/pam_pkcs11/nssdb -N
Однако в данном случае, ошибка могла произойти из-за несовместимости версии или других проблем в зависимости от требований приложения или среды.
-
Избегайте использования формата
sql:
в старых версиях систем:Хотя направление использования
sql
является стандартным в современных системах, в старых системах или при специфических настройках PAM лучше обходить его стороной из-за возможности конфликта версий.
Применение:
Решая проблемы, связанные с инициализацией NSS и созданием новых баз данных PKCS#11, помните следующее:
-
Перед началом работы убедитесь, что все каталоги и файлы, требуемые для работы NSS, созданы, и права на них настроены безопасным образом.
-
Проверьте совместимость всех используемых приложений с текущими версиями NSS, учитывая разницу в поддержке форматов баз данных.
-
Если вы обновляете систему или приложения, обязательно убедитесь в корректности миграции существующих баз данных на новый формат.
-
Обратите внимание на документацию и возможности NSS в зависимости от версии ОС и используемых модулей PAM и PKCS#11.
В случае возникновения аналогичных проблем, рекомендуется делать резервные копии существующих баз данных и конфигурационных файлов, обеспечивая возможность отката изменений. Такая осмотрительность позволит избежать сложных конфликтов и проблем с аутентификацией в будущих модификациях.