Проверка пакета NuGet во время сборки

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

Я пытаюсь создать приложение .NET Core 8 с опцией DOTNET_NUGET_SIGNATURE_VERIFICATION, установленной в true. Я строю его в OpenShift S2I и использую приватный репозиторий NuGet (Artifactory).

Если DOTNET_NUGET_SIGNATURE_VERIFICATION=true, сборка занимает около 3,5 часов.

Если DOTNET_NUGET_SIGNATURE_VERIFICATION=false, сборка занимает около 3 минут.

Я нашел статью https://devblogs.microsoft.com/nuget/the-nuget-org-repository-signing-certificate-will-be-updated-as-soon-as-april-8th-2024/, в которой говорится, что мне нужно настроить отпечаток для доверенного подписанта, что я и сделал, но это не помогло. В журналах сборки я вижу предупреждения NU3018 и ошибки NU3034.

NU3018 Функция отзыва не смогла проверить отзыв, потому что сервер отзыва не смог быть достигнут. RevocationStatusUnknown: невозможно получить CRL сертификата
NU3034 Этот пакет подписан, но не доверенным подписантом.

Предупреждение приводит меня к https://learn.microsoft.com/en-us/dotnet/core/tools/nuget-signed-package-verification, где упоминается, что пакет сертификатов ищется по адресу

/etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem

Я полагаю, мне нужно добавить его туда, но где я могу его получить?
Я не разработчик. Я пытаюсь настроить OpenShift для наших разработчиков.
Что мне делать с NU3034? Нужны ли мне какие-то значения nuget.config от разработчиков?
Спасибо.

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

Проверка подлинности пакетов NuGet во время сборки: Подробное руководство

При сборке приложения на .NET Core 8 с включенной опцией DOTNET_NUGET_SIGNATURE_VERIFICATION=true вы столкнулись с двумя основными проблемами: чрезмерное время сборки и ошибки, связанные с доверенными подписчиками. Рассмотрим, что вы можете сделать для решения этих проблем и оптимизации процесса.

Проблема скорости сборки

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

Ошибки и предупреждения

В логе сборки увидели следующие предупреждения и ошибки:

  • NU3018: "Функция отзыва не смогла проверить отзыв, так как сервер отзыва не был доступен. RevocationStatusUnknown: невозможно получить CRL сертификата."
  • NU3034: "Этот пакет подписан, но не доверенным подписчиком."

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

Решение проблемы с NU3034

  1. Добавление шифровальных сертификатов:

    • Проверьте, правильно ли вы добавили отпечаток сертификата в список доверенных подписчиков. Вам необходимо настроить nuget.config, добавив секцию для подписчиков:

      <configuration>
      <config>
       <add key="repositorySignatureVerification" value="true" />
      </config>
      <trustedSigners>
       <signer>
         <certificate fingerprint="ваш_отпечаток_сертификата" />
       </signer>
      </trustedSigners>
      </configuration>
    • Убедитесь, что отпечаток совпадает с тем, что используется для подписания пакетов в вашем частном репозитории.

  2. Правильная локализация сертификатов:

    • Как упоминалось в вашем вопросе, сертификаты поиска проводятся в следующем пути:
      /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem
    • Убедитесь, что у вас есть необходимый сертификат в этом каталоге. Если его там нет, вы можете его получить у разработчиков или установить самостоятельно.

Проверка и настройка CRL

Ошибка NU3018 указывает на проблемы с доступом к службе проверки отзыва сертификатов (CRL). Для решения этой проблемы:

  1. Проверьте доступность CRL:

    • Убедитесь, что сервер, на котором выполняется ваше приложение (OpenShift), имеет доступ к интернету или к локальной службе проверки отзыва сертификатов. Проверьте настройки брандмауэра и конфигурации сети.
  2. Отладка сети:

    • Если доступ к CRL невозможен, вы можете временно отключить проверку отзыва с помощью параметра DOTNET_NO_CERTIFICATE_REVOCATION_CHECK (хотя это не рекомендуется в производственных средах). Это решение позволит временно устранить ошибку, но вам следует найти коренную причину проблемы.

Рекомендации по дальнейшим действиям

Теперь, когда вы знаете, как устранить основную проблему и ошибки, рассмотрите следующие шаги:

  • Консультация с разработчиками: Свяжитесь с вашими разработчиками для получения правильного отпечатка сертификата и уточнения деталей настройки nuget.config.
  • Тестирование конфигурации: После внесения изменений в конфигурацию протестируйте сборку, чтобы убедиться, что время сборки значительно сократилось и ошибки больше не появляются.
  • Мониторинг системы: Введите регулярный мониторинг системы для выявления любых будущих проблем с сертификатами и безопасностью.

Заключение

Процесс верификации подписи NuGet может значительно замедлить сборку, если не правильно настроены сертификаты или доступ к CRL. С помощью описанных выше шагов вы сможете значительно оптимизировать сборку .NET Core приложения на OpenShift и устранить возникающие ошибки. Важно поддерживать контакт с разработчиками для получения актуальных данных о сертификатах и их статусе, что позволит избежать подобных проблем в будущем.

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

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