Summary: | .NET 8: Не устанавливаются пакеты из NuGet в связи с отсутствием доверия к 2 корневым сертификатам | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Artem Varaksa <varaksaaa> | ||||
Component: | dotnet-8.0 | Assignee: | Vitaly Lipatov <lav> | ||||
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||
Severity: | normal | ||||||
Priority: | P5 | CC: | basealt, lav | ||||
Version: | unstable | ||||||
Hardware: | x86_64 | ||||||
OS: | Linux | ||||||
URL: | https://learn.microsoft.com/ru-ru/dotnet/core/tools/nuget-signed-package-verification | ||||||
Attachments: |
|
Description
Artem Varaksa
2024-02-29 16:26:04 MSK
Проблема воспроизводится при наличии файла /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem откуда он у вас в системе? (Ответ для Vitaly Lipatov на комментарий #1) > Проблема воспроизводится при наличии файла > /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem > откуда он у вас в системе? > # rpm -qf /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem > ca-trust-0.1.4-alt1.noarch Пакет присутствует во всех дистрибутивах p10 https://packages.altlinux.org/ru/p10/srpms/ca-trust/images/?task_repo=p10. (Ответ для Artem Varaksa на комментарий #2) > > ca-trust-0.1.4-alt1.noarch В sisyphus 0.1.5-alt1. Насколько я понял логику поиска, при существовании файла /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem уже не будет принят в расчёт /usr/lib64/dotnet/sdk/8.0.102/trustedroots/timestampctl.pem Ещё более странно то, что не упоминается файл /usr/lib64/dotnet/sdk/8.0.102/trustedroots/codesignctl.pem который по логике и должен использоваться для проверки подписи. Так вот, при отсутствии файла /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem Надпись такая: info : X.509 certificate chain validation will use the fallback certificate bundle at '/usr/lib64/dotnet/sdk/8.0.102/trustedroots/codesignctl.pem'. info : X.509 certificate chain validation will use the fallback certificate bundle at '/usr/lib64/dotnet/sdk/8.0.102/trustedroots/timestampctl.pem'. то есть system certificate bundle уже нет, зато не потерялся codesignctl.pem В общем, код такой в NuGet.Client/src/NuGet.Core/NuGet.Packaging/Signing/TrustStore/X509TrustStore.cs public static void InitializeForDotNetSdk(ILogger logger) { _ = GetX509ChainFactory(X509StorePurpose.CodeSigning, logger, CreateX509ChainFactoryForDotNetSdk); _ = GetX509ChainFactory(X509StorePurpose.Timestamping, logger, CreateX509ChainFactoryForDotNetSdk); } А каждый CreateX509ChainFactoryForDotNetSdk возвращает успех, если найдено системное хранилище и использует только его! (Ответ для Artem Varaksa на комментарий #0) ... > > info : X.509 certificate chain validation will use the system certificate bundle at '/etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem'. .. > В системном хранилище доверия этих сертификатов нет (# trust-list). ... > https://crt.sh/ > ?q=7353B6D6C2D6DA4247773F3F07D075DECB5134212BEAD0928EF1F46115260941 > - > https://crt.sh/ > ?q=3E9099B5015E8F486C00BCEA9D111EE721FABA355A89BCF1DF69561E3DC6325C > Если у вас в системе есть файл /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem, то заполните его нужными сертификатами, чтобы nuget мог проверять подписи, или удалите этот пустой файл, если он не используется. «…в следующем расположении: /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem Если найден допустимый пакет сертификатов, NuGet предпочтет его пакету сертификатов пакета SDK для .NET для подписывания кода.» https://learn.microsoft.com/ru-ru/dotnet/core/tools/nuget-signed-package-verification Можно подключиться к Программе доверенных корневых сертификатов Майкрософт https://learn.microsoft.com/ru-ru/security/trusted-root/program-requirements Добавил пакет с нужными сертификатами ca-certificates-nuget.org.git=0.1-alt1 и зависимость на него в dotnet-sdk-8.0.git=8.0.102-alt2 В июле был выпущен новый сертификат и ошибка вновь появилась. Нужно теперь добавить новый сертификат в указанный пакет У меня проблема решилась добавлением сертификата DigiCert Trusted Root G4 в файл /etc/pki/ca-trust/extracted/pem/objsign-ca-bundle.pem ca-certificates-nuget.org-0.2-alt1 -> sisyphus: Mon Dec 09 2024 Vitaly Lipatov <lav@altlinux.ru> 0.2-alt1 - add DigiCertTrustedRootG4 (ALT bug 49566) |