Дата публикации

Обновлено

Автор статьи: Rinat Khairulin

33

NCALayer на macOS не работает, не открывает модули, настройки и окно выбора ЭЦП

NCALayer запускается на macOS, но не открывает модули, настройки или окно выбора ключа ЭЦП? Разбираем два решения: сброс каталога шрифтов при ошибке JavaFX MacFontFinder и настройку доверия к корневым сертификатам НУЦ РК при проблемах защищённого соединения.

Как выглядит проблема

Меню выбора настроек и модулей NCALayer.

NCALayer запускается, его значок появляется в строке меню macOS, но отдельные функции не реагируют. Не открываются «Управление модулями» и настройки, а на сайте после нажатия кнопки подписания не появляется окно выбора ключа ЭЦП.

Характерные признаки:

  • NCALayer сообщает об успешном запуске
  • значок приложения виден в верхней панели
  • сайт определяет, что NCALayer запущен
  • пункты «Управление модулями» и «Настройки» ничего не открывают
  • выбор сертификата или ключа на сайте не появляется
  • повторные нажатия не выводят понятного сообщения об ошибке

На конкретном Mac эта проблема сохранялась около двух лет. Переустановка NCALayer и смена браузера не устраняли её. После штатного сброса шрифтов macOS окна NCALayer снова начали открываться, а работа с ЭЦП на сайте восстановилась.

Такое поведение легко принять за ошибку браузера, сертификата или самого сайта. Однако в данном случае сетевое соединение работало, а сбой происходил позже – при построении графического окна внутри NCALayer.

Почему сайт видит NCALayer, но ничего не открывается

NCALayer поднимает локальный WebSocket-сервер на компьютере. Сайт обращается к нему через локальный порт 13579 и передаёт команду на выбор ключа или подписание.

Поэтому возможна ситуация, когда соединение уже установлено, но пользовательское окно не появляется. Сайт свою часть запроса выполнил, NCALayer его получил, однако встроенный интерфейс JavaFX завершился с ошибкой при создании окна.

В журнале исправного сетевого запуска можно увидеть строки о запуске сервера и подключении сайта:

Websocket server has been started on 13579 Connection originated from https://knp.kgd.gov.kz opened!

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

Как найти ошибку в журнале NCALayer

Окно перехода к папке NCALayer.

NCALayer записывает технические сообщения в файл ncalayer.log. В macOS он обычно находится по адресу:

~/Library/Application Support/NCALayer/ncalayer.log

Чтобы открыть папку, запустите Finder, выберите «Переход» → «Переход к папке…», вставьте путь и нажмите Return.

После этого запустите NCALayer, попробуйте открыть «Управление модулями» или выполнить подписание на сайте, а затем посмотрите последние строки журнала.

При проблеме с каталогом шрифтов появляется исключение, содержащее MacFontFinder:

Exception in thread "JavaFX Application Thread" java.lang.NullPointerException at com.sun.javafx.font.MacFontFinder.populateFontFileNameMap at com.sun.javafx.font.PrismFontFactory.getFullNameToFileMap

Названия методов после этих строк могут отличаться. Например, журнал может ссылаться на окно модулей, настройки прокси или диалог выбора ключа. Главный диагностический признак – сочетание JavaFX Application Thread, NullPointerException и MacFontFinder.

Решено! Сброс каталога шрифтов в macOS

Окно сброса каталога шрифтов в macOS.

Перед сбросом сохраните открытые документы и завершите работу NCALayer и других приложений. Сама macOS предупреждает, что после процедуры потребуется перезагрузка.

Порядок действий в актуальном приложении «Шрифты»:

  1. Откройте приложение «Шрифты» через Spotlight или папку «Программы».
  2. В верхней строке меню выберите «Шрифты».
  3. Откройте «Настройки…».
  4. Перейдите в раздел «Дополнения».
  5. Нажмите «Сброс шрифтов».
  6. Подтвердите действие и введите пароль пользователя или используйте Touch ID, если появится запрос.
  7. Перезагрузите Mac.
  8. После перезагрузки запустите NCALayer и повторите проверку.

В некоторых версиях macOS название раздела может быть переведено как «Дополнительно», но кнопка называется «Сброс шрифтов». Пункт находится в настройках приложения «Шрифты», а не в меню «Файл».

Apple описывает эту процедуру в руководстве по восстановлению стандартных шрифтов.

Что произойдёт с установленными шрифтами

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

Во время сброса macOS:

  • деактивирует пользовательские шрифты
  • перемещает их в папки Fonts (Removed)
  • возвращает набор загружаемых шрифтов к настройкам текущего языка и региона
  • удаляет шрифты из созданных пользователем библиотек
  • отключает шрифты, которыми управляли сторонние утилиты

Файлы не удаляются безвозвратно и не отправляются в Корзину. В зависимости от места первоначальной установки их можно найти здесь:

/Library/Fonts (Removed) ~/Library/Fonts (Removed)

Чтобы найти перемещённые шрифты, откройте Finder и выберите в верхнем меню «Переход» → «Переход к папке…». Сначала вставьте путь:

~/Library/Fonts (Removed)

Если такой папки нет, проверьте папку шрифтов, установленных для всех пользователей:

/Library/Fonts (Removed)

Из этих папок можно устанавливать обратно только необходимые гарнитуры. Для этого дважды нажмите файл шрифта и подтвердите установку в приложении «Шрифты».

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

Проверка после перезагрузки

Окно перезагрузки macOS.

После перезагрузки не начинайте проверку сразу с подписания важного документа. Сначала убедитесь, что базовые окна NCALayer открываются нормально.

Проверьте по порядку:

  1. Запустите NCALayer и дождитесь сообщения об успешном запуске.
  2. Нажмите значок NCALayer в строке меню.
  3. Откройте «Настройки».
  4. Закройте окно и откройте «Управление модулями».
  5. Убедитесь, что список модулей отображается и интерфейс реагирует.
  6. Перейдите на нужный сайт и вызовите выбор ключа ЭЦП.
  7. Проверьте, что окно выбора файла или сертификата появилось.

Если все три типа окон открываются, сбой JavaFX устранён. В подтверждённом случае после сброса восстановились и меню NCALayer, и взаимодействие с сайтом.

Если вы используете редкий сторонний модуль, дополнительно проверьте его состояние в «Управлении модулями». Сброс шрифтов не должен удалять модули NCALayer, но отдельная проверка позволит не обнаружить проблему в момент подписания.

Почему JavaFX реагирует на состояние шрифтов

Интерфейс NCALayer для macOS построен на JavaFX. Перед выводом текста JavaFX получает список доступных системных гарнитур и сопоставляет названия шрифтов с файлами.

В JavaFX 8 существовала ошибка: системный вызов мог вернуть неполные данные о гарнитуре, после чего MacFontFinder обращался к пустому значению и завершал работу с NullPointerException. В результате сам процесс NCALayer и локальный сервер продолжали работать, но графическое окно не создавалось.

Проблема зарегистрирована в базе OpenJDK как JDK-8089900: NPE in MacFontFinder.populateFontFileNameMap. В описании указано, что один из пользователей устранил сбой восстановлением стандартных шрифтов через Font Book. Ошибка затрагивала JavaFX 8, а исправление было включено в более новую ветку JavaFX.

Это объясняет необычное сочетание симптомов: сайт подключается, NCALayer отвечает, но окно выбора ключа не появляется. Сброс шрифтов восстанавливает каталог, который читает старая JavaFX, поэтому интерфейс снова начинает строиться.

Настройка доверия к корневым сертификатам

Окно связки ключей для настройки доверия к корневым сертификатам.

Этот способ относится к другой группе ошибок. Он нужен, когда NCALayer запущен, но браузер не доверяет защищённому соединению с локальным сервисом, показывает предупреждение о сертификате или не может построить цепочку доверия. Ошибку JavaFX с MacFontFinder настройка сертификатов не исправляет.

После запуска NCALayer автоматически добавляет необходимые корневые сертификаты в системное хранилище macOS. Однако для корректной работы им может потребоваться вручную установить доверие.

  1. Запустите NCALayer хотя бы один раз, затем завершите его работу.
  2. Через Spotlight откройте приложение «Связка ключей».
  3. В левой панели выберите связку «Вход».
  4. Откройте категорию «Сертификаты».
  5. Найдите и дважды нажмите сертификат «Ұлттық куәландырушы орталық (RSA) 2022».
  6. Раскройте раздел «Доверие».
  7. Для пункта «Стандартный алгоритм X.509» выберите «Всегда доверять».
  8. Закройте окно сертификата, введите пароль macOS и подтвердите обновление настроек.
  9. Повторите те же действия для сертификата «Негізгі куәландырушы орталық (RSA)».
  10. Перезапустите Mac или полностью закройте и заново откройте NCALayer и браузер.

Точные названия сертификатов:

Ұлттық куәландырушы орталық (RSA) 2022 Негізгі куәландырушы орталық (RSA)

Официальный порядок приведён в руководстве NCALayer для macOS.

После настройки доверия можно отдельно проверить защищённое соединение браузера с локальным сервером NCALayer. Для этого запустите NCALayer и откройте адрес:

https://127.0.0.1:13579

Если браузер открыл страницу без предупреждения о небезопасном сертификате, цепочка доверия настроена правильно. Сообщение Not Found в этом случае допустимо: оно означает, что браузер подключился к локальному серверу NCALayer, но по этому адресу нет обычной веб-страницы.

Если появляется предупреждение о сертификате, проверьте доверие к обоим корневым сертификатам. Если браузер сообщает, что соединение установить невозможно, убедитесь, что NCALayer запущен.

Firefox может использовать собственное хранилище сертификатов. Если ошибка остаётся только в Firefox, воспользуйтесь отдельной инструкцией НУЦ РК для Firefox.

Если сброс шрифтов не помог

Сброс шрифтов помог в подтверждённом случае с ошибкой MacFontFinder, но это не универсальное решение всех проблем NCALayer. Если в журнале нет упоминаний MacFontFinder, причина может быть другой.

Проверьте следующее:

  • NCALayer действительно запущен и его значок виден в строке меню
  • локальный порт 13579 не занят другим процессом
  • установлена актуальная версия NCALayer с официального сайта
  • нужный сторонний модуль установлен и включён
  • системные дата, время и часовой пояс указаны правильно
  • в журнале нет ошибок запуска WebSocket, сертификата или загрузки основных модулей

Актуальный установщик и руководство доступны на официальной странице NCALayer НУЦ РК.

Не заменяйте вручную встроенные JAR- и dylib-файлы JavaFX внутри NCALayer. Программа используется для работы с ЭЦП, поэтому неподтверждённые изменения среды выполнения создают лишний риск и могут нарушить загрузку модулей. Если проблема остаётся, сохраните ncalayer.log и передайте его поддержке НУЦ РК вместе с версией macOS, названием сайта и точным временем возникновения ошибки.

Вопросы и результаты проверки

Если вы столкнулись с похожей проблемой, напишите в комментариях, как NCALayer ведёт себя на вашем Mac. Даже если сброс шрифтов помог, ваш результат будет полезен другим пользователям с такой же ошибкой.

Укажите:

  • версию macOS
  • версию NCALayer
  • какой пункт не открывался: настройки, управление модулями или окно выбора ключа
  • на каком сайте возникала проблема
  • присутствовала ли в ncalayer.log строка MacFontFinder.populateFontFileNameMap
  • помог ли сброс шрифтов и потребовались ли дополнительные действия

Если после сброса проблема осталась, приведите несколько строк журнала непосредственно перед ошибкой и после неё. По ним можно отличить сбой JavaFX от проблем с локальным портом, сертификатами или отдельным модулем.

Постараемся разобрать ситуацию по симптомам и дополнить статью найденным решением.

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

Комментарии (1)

  1. Асия

    У меня помог сброс шрифтов в macOS. После перезагрузки NCALayer сразу заработал. Только учтите, что установленные шрифты сбросятся, потом я добавляла обратно только нужные по мере необходимости.