NuGet / Home

Repo for NuGet Client issues
Other
1.5k stars 253 forks source link

Plugin trust cross platform #7338

Closed nkolev92 closed 2 months ago

nkolev92 commented 6 years ago

NuGet.exe on Mono

dotnet.exe

Different perspective

We have been thinking about the solutions on a per product level. We can consider a per platform approach.

The issues we have been facing on OSX and Linux can be categorized in 2 buckets.

  1. Trust Whatever signing approach is used, we need to make sure that the signer chains to a trusted root on that machine. Microsoft certificates are not trusted by default on either OSX/Linux. There's a Microsoft-wide effort to get our certs trusted on different machines. This might be years down the line and still wouldn't be completely.

  2. Signature Validation The NuGet client needs to be able to verify the signature on disk.

Apple Code Signing Services

We can consider using Apple Code Signing, OSX's standard for signing executables. OSX does not validate the signature prior to execution. We would need to do that manually.

There are ways to validate the signature with Obj C code and/or by invoking additional OSX command. We need to investigate this approach furher to determine it's viability.

Detached signatures

We can consider detached signatures. Current cryptographic APIs should be sufficient to allow us to verify that signature safely in .NET Core. This however still doesn't solve the trust problem. We would need to define our own certicate store/re-use a well known if possible. If we were to define our own certificate store, we would need to work out a setup story. Carrying a list of well known certificates would mean we wouldn't do revocation and that could be security risk.

Open Questions

ghost commented 2 years ago

Issue is missing Type label, remember to add a Type label