Signieren von NuGet-PaketenSigning NuGet Packages

Signierte Pakete ermöglichen die Überprüfung der Integrität von Inhalten, um Inhalte vor Manipulation zu schützen.Signed packages allows for content integrity verification checks which provides protection against content tampering. Die Paketsignatur dient auch als zentrale, vertrauenswürdige Informationsquelle in Bezug auf die tatsächliche Herkunft eines Pakets und stärkt das Vertrauen des Verbrauchers in die Echtheit des Pakets.The package signature also serves as the single source of truth about the actual origin of the package and bolsters package authenticity for the consumer. In diesem Leitfaden wird vorausgesetzt, dass Sie bereits ein Paket erstellt haben.This guide assumes you have already created a package.

Abrufen eines CodesignaturzertifikatsGet a code signing certificate

Gültige Zertifikate können von öffentlichen Zertifizierungsstellen wie Symantec, DigiCert, Go Daddy, Global Sign, Comodo, Certum usw. abgerufen werden. Die vollständige Liste aller von Windows als vertrauenswürdig eingestuften Zertifizierungsstellen finden Sie unter http://aka.ms/trustcertpartners.Valid certificates may be obtained from a public certificate authority such as Symantec, DigiCert, Go Daddy, Global Sign, Comodo, Certum, etc. The complete list of certification authorities trusted by Windows can be obtained from http://aka.ms/trustcertpartners.

Sie können selbst ausgestellte Zertifikate für Testzwecke verwenden.You can use self-issued certificates for testing purposes. Pakete, die mit selbst ausgestellten Zertifikaten signiert wurde, werden allerdings von NuGet.org nicht akzeptiert. Weitere Informationen zum Erstellen einer variablen GruppeHowever, packages signed using self-issued certificates are not accepted by NuGet.org. Learn more about creating a test certificate

Exportieren der ZertifikatdateiExport the certificate file

  • Sie können ein vorhandenes Zertifikat mithilfe des Zertifikatexport-Assistenten in ein binäres DER-Format exportieren.You can export an existing certificate to a binary DER format by using the Certificate Export Wizard.

    Zertifikatexport-Assistent

  • Sie können das Zertifikat auch mithilfe des PowerShell-Befehls „Export-Certificate“ exportieren.You can also export the certificate using the Export-Certificate PowerShell command.

Signieren des PaketsSign the package

Hinweis

Erfordert nuget.exe 4.6.0 oder höherRequires nuget.exe 4.6.0 or later

Signieren Sie das Paket mithilfe von nuget sign:Sign the package using nuget sign:

nuget sign MyPackage.nupkg -CertificatePath <PathToTheCertificate> -Timestamper <TimestampServiceURL>

Tipp

Der Zertifikatanbieter stellt häufig auch eine Zeitstempelserver-URL bereit, die Sie für das oben gezeigte optionale Argument Timestamper verwenden können.The certificate provider often also provides a timestamping server URL which you can use for the Timestamper optional argument show above. Informieren Sie sich über diese Dienst-URL anhand der Dokumentation Ihres Anbieters und/oder über dessen Support.Consult with your provider's documentation and/or support for that service URL.

  • Sie können ein im Zertifikatspeicher verfügbares Zertifikat oder ein Zertifikat aus einer Datei verwenden.You can use a certificate available in the certificate store or use a certificate from a file. Informationen zu nuget sign finden Sie in der Referenz der Befehlszeilenschnittstelle.See CLI reference for nuget sign.
  • Signierte Pakete sollten einen Zeitstempel enthalten, um sicherzustellen, dass die Signatur gültig bleibt, wenn das Signaturzertifikat abläuft.Signed packages should include a timestamp to make sure the signature remains valid when the signing certificate has expired. Andernfalls erzeugt der Signierungsvorgang eine Warnung.Else the sign operation will produce a warning.
  • Sie können Details der Signatur eines bestimmten Pakets mit dem NuGet-Befehl „verify“ anzeigen.You can see the signature details of a given package using nuget verify.

Registrieren des Zertifikats bei NuGet.orgRegister the certificate on NuGet.org

Um ein signiertes Paket zu veröffentlichen, müssen Sie das Zertifikat zuerst bei NuGet.org registrieren. Sie benötigen das Zertifikat als .cer-Datei in einem binären DER-Format.To publish a signed package, you must first register the certificate with NuGet.org. You need the certificate as a .cer file in a binary DER format.

  1. Melden Sie sich bei NuGet.org an.Sign in to NuGet.org.
  2. Wechseln Sie zu Account settings (oder Manage Organization > Edit Organziation, wenn Sie das Zertifikat für ein Organisationskonto registrieren möchten).Go to Account settings (or Manage Organization > Edit Organziation if you would like to register the certificate with an Organization account).
  3. Erweitern Sie den Abschnitt Certificates, und wählen Sie Register new aus.Expand the Certificates section and select Register new.
  4. Suchen Sie nach der zuvor exportierten Zertifikatdatei, und wählen Sie sie aus.Browse and select the certficate file that was exported earlier. Registrierte ZertifikateRegistered Certificates

HinweisNote

  • Ein Benutzer kann mehrere Zertifikate übermitteln, und ein und dasselbe Zertifikat kann von mehreren Benutzern registriert werden.One user can submit multiple certificates and the same certificate can be registered by multiple users.
  • Sobald ein Zertifikat für einen Benutzer registriert wurde, müssen alle zukünftigen Pakete mit einem der Zertifikate angemeldet werden.Once a user has a certificate registered, all future package submissions must be signed with one of the certificates. Siehe Verwalten der Signaturanforderungen für Ihr Paket auf NuGet.orgSee Manage signing requirements for your package on NuGet.org
  • Benutzer können ein registriertes Zertifikat auch aus dem Konto entfernen.Users can also remove a registered certificate from the account. Sobald ein Zertifikat entfernt wurde, tritt bei neuen Paketen, die mit diesem Zertifikat signiert wurden, ein Fehler auf.Once a certificate is removed, new packages signed with that certificate will fail at submission. Vorhandene Pakete sind nicht betroffen.Existing packages aren't affected.

Veröffentlichen des PaketsPublish the package

Sie können das Paket jetzt auf NuGet.org veröffentlichen. Informationen dazu finden Sie unter Veröffentlichen von Paketen.You are now ready to publish the package to NuGet.org. See Publishing packages.

Erstellen eines TestzertifikatsCreate a test certificate

Sie können selbst ausgestellte Zertifikate für Testzwecke verwenden.You can use self-issued certificates for testing purposes. Um ein selbst ausgestelltes Zertifikat zu erstellen, verwenden Sie den PowerShell-Befehl „New-SelfSignedCertificate“.To create a self-issued certificate, use the New-SelfSignedCertificate PowerShell command.

New-SelfSignedCertificate -Subject "CN=NuGet Test Developer, OU=Use for testing purposes ONLY" `
                          -FriendlyName "NuGetTestDeveloper" `
                          -Type CodeSigning `
                          -KeyUsage DigitalSignature `
                          -KeyLength 2048 `
                          -KeyAlgorithm RSA `
                          -HashAlgorithm SHA256 `
                          -Provider "Microsoft Enhanced RSA and AES Cryptographic Provider" `
                          -CertStoreLocation "Cert:\CurrentUser\My" 

Dieser Befehl erstellt ein Testzertifikat, das im persönlichen Zertifikatspeicher des aktuellen Benutzers gespeichert wird.This command creates a testing certificate available in the current user's personal certificate store. Sie können den Zertifikatspeicher durch Ausführen von certmgr.msc öffnen, um das neu erstellte Zertifikat anzuzeigen.You can open the certificate store by running certmgr.msc to see the newly created certificate.

Warnung

NuGet.org akzeptiert keine Pakete, die mit selbst ausgestellten Zertifikaten signiert sind.NuGet.org does not accept packages signed with self-issued certificates.

Verwalten der Signaturanforderungen für Ihr Paket auf NuGet.orgManage signing requirements for your package on NuGet.org

  1. Melden Sie sich bei NuGet.org an.Sign in to NuGet.org.

  2. Wechseln Sie zu Manage Packages. Paketsignierer konfigurierenGo to Manage Packages Configure package signers

  • Wenn Sie der einzige Besitzer eines Pakets sind, sind Sie der erforderliche Signaturgeber, d.h., Sie können ein beliebiges der registrierten Zertifikate verwenden, um Ihre Pakete in NuGet.org zu signieren und zu veröffentlichen.If you are the sole owner of a package, you are the required signer i.e. you can use any of the registered certificates to sign and publish your packages to NuGet.org.

  • Wenn ein Paket über mehrere Besitzer verfügt, können standardmäßig die Zertifikate „jedes“ Besitzers zum Signieren des Pakets verwendet werden.If a package has multiple owners, by default, "Any" owner's certificates can be used to sign the package. Als Mitbesitzer des Pakets können Sie „Jeder“ außer Kraft setzen und sich selbst oder einen beliebigen Mitbesitzer als erforderlichen Signaturgeber festlegen.As a co-owner of the package, you can override "Any" with yourself or any other co-owner to be the required signer. Wenn Sie einen Besitzer angeben, für den kein Zertifikat registriert ist, werden nicht signierte Pakete zugelassen.If you make an owner who does not have any certificate registered, then unsigned packages will be allowed.

  • Ähnliches gilt, wenn die Standardoption „Jeder“ für ein Paket ausgewählt wurde, für das ein Besitzer ein Zertifikat registriert hat, ein anderer Besitzer jedoch nicht: NuGet.org akzeptiert entweder ein signiertes Paket mit einer von einem der Besitzer registrierten Signatur oder ein nicht signiertes Paket (da für einen der Besitzer kein Zertifikat registriert wurde).Similarly, if the default "Any" option is selected for a package where one owner has a certificate registered and another owner does not have any certificate registered, then NuGet.org accepts either a signed package with a signature registered by one of its owners or an unsigned package (because one of the owners does not have any certificate registered).