Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Signing: use separate fallback certificate bundles for code signing and timestamping #12033

Closed
dtivel opened this issue Aug 17, 2022 · 0 comments · Fixed by NuGet/NuGet.Client#4791
Assignees
Labels
Functionality:Signing Priority:2 Issues for the current backlog. Product:dotnet.exe Type:DCR Design Change Request
Milestone

Comments

@dtivel
Copy link
Contributor

dtivel commented Aug 17, 2022

NuGet signed package verification on Linux and macOS uses the fallback certificate bundle that ships in the .NET SDK. Some recent issues have pointed out that this certificate bundle lacks some root certificates and results in "untrusted root" warnings/errors during signed package verification.

A goal of enabling signed package verification on non-Windows platforms is that trust decisions will always be correct. (This has never been a problem on Windows.) Whatever trust anchors we use must be valid for CS and TS. Actually, it's a bit more nuanced in that whatever set of trust anchors we use for purpose X must be valid for purpose X. The set of trust anchors valid for CS and the set of trust anchors valid for TS intersect but do not necessarily overlap. Using a trust anchor that is only valid for TS (or TLS, for that matter) to verify a CS certificate would be incorrect.

The certificate bundle in the .NET SDK is a subset of the Windows CTL that is produced by the Microsoft Trusted Root Program. While the certificate bundle contains root certificates that are valid for CS and TS, it only contains root certificates which are valid for both CS and TS. The bundle does not contain root certificates which are valid for one purpose one but not the other.

We have a plan (no ETA yet) to have separate fallback certificate bundles for CS and TS. Each bundle will contain the complete set of root certificates for that purpose from the Windows CTL.

This change will require modifications to both dotnet/sdk and NuGet/NuGet.Client.

Related:

CC @richlander, @aortiz-msft

@dtivel dtivel self-assigned this Aug 17, 2022
@nkolev92 nkolev92 added the Priority:2 Issues for the current backlog. label Aug 18, 2022
dtivel added a commit to NuGet/NuGet.Client that referenced this issue Oct 12, 2022
kartheekp-ms pushed a commit to NuGet/NuGet.Client that referenced this issue Oct 12, 2022
nkolev92 pushed a commit to NuGet/NuGet.Client that referenced this issue Oct 12, 2022
Resolve NuGet/Home#12033.

Co-authored-by: Damon Tivel <dtivel@microsoft.com>
@jebriede jebriede added this to the 6.4 milestone Oct 27, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Functionality:Signing Priority:2 Issues for the current backlog. Product:dotnet.exe Type:DCR Design Change Request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants