Signieren eines App-Pakets (Windows Store-Apps)

Standardmäßig werden alle App-Pakete, die Visual Studio generiert, mit einem Testzertifikat signiert. Wenn Sie ein Paket erstellen, generiert Visual Studio einen Ordner, der das signierte Paket enthält. Die im Ordner enthaltene Zertifikatsdatei (.cer) enthält den öffentlichen Schlüssel, der zum Signieren des Pakets verwendet wird. Dieser Schlüssel muss auf dem Computer installiert werden, bevor das App-Paket installiert wird.

Generieren des Testzertifikats

Die Zertifikatsdatei (PFX) wird erstellt und dem Projekt hinzugefügt, wenn das Projekt erstellt wird.

Für das Betrefffeld des Zertifikats ist das Publisher-Attribut des Identity-Elements für die Quellmanifestdatei (.appxmanifest) festgelegt.

  • Wenn Sie ein lokales Paket erstellen, entspricht der Standardwert des Publisher-Attributs Ihrem Benutzernamen.

  • Wenn Sie ein Paket für den Windows Store erstellen oder Ihre App zuordnen, wird das Publisher-Attribut auf die Publisher ID festgelegt, die von Ihrem Entwicklerkonto im Store abgerufen wird, wenn Sie sich bei der Paketerstellung anmelden.

Im Rahmen des Zertifikaterstellungsprozesses wird der Projektdatei auch eine Eigenschaft hinzugefügt:

<PackageCertificateKeyFile> RisingStar_TemporaryKey.pfx </PackageCertificateKeyFile>

Der Wert von PackageCertificateKeyFile ist entweder der relative oder der vollständige Pfad des Quellzertifikats.

Falls das Zertifikat fehlt, wird es erstellt, wenn das Paket über das Menü Store erstellt wird, nicht aber bei einer Erstellung über die Eingabeaufforderung. Wenn in Visual Studio ein Zertifikat erstellt wird, werden die Werte für die folgenden Eigenschaften festgelegt:

  • Der Wert der Erweiterung Basiseinschränkungen wird auf Subject Type=End Entity festgelegt.

    Hinweis

    Die Basiseinschränkungserweiterung identifiziert, ob der Betreff des Zertifikats eine Zertifizierungsstelle ist. Diese Erweiterung definiert außerdem die maximale Tiefe gültiger Zertifizierungspfade, die dieses Zertifikat enthalten. Die Eigenschaft Basiseinschränkungen gibt an, ob der zertifizierte öffentliche Schlüssel Zertifikatsignaturen überprüfen kann.

  • Der Wert der Erweiterung Enhanced Key Usage (EKU) wird auf Code Signing festgelegt.

Zertifikate sind ein Jahr ab Erstellungsdatum gültig. Informationen über das Erneuern von Zertifikaten finden Sie unter Erneuern eines Zertifikats.

Tipp

Wenn während des Signierungsprozesses ein Fehler wie "Das angegebene Zertifikat ist ungültig. Es ist entweder abgelaufen oder es besteht ein anderes Problem" angezeigt wird, verwenden Sie den Manifest-Designer zum Erstellen eines Testzertifikats, mit dem das alte ersetzt wird.

Überprüfen von Zertifikaten

Während des Verpackens wird das angegebene Zertifikat von Visual Studio folgendermaßen überprüft:

  • Das Vorhandensein der Erweiterung Basiseinschränkungen und ihr Wert wird überprüft. Der Wert lautet entweder Subject Type=End Entity oder ist nicht definiert.

  • Der Wert der Eigenschaft Enhanced Key Usage wird überprüft. Dieser Wert muss Code Signing oder Lifetime Signing lauten. Alle anderen EKUs sind nicht zulässig.

  • Es wird überprüft, ob der Wert der KeyUsage (KU)-Eigenschaft entweder Löschen oder DigitalSignature ist.

  • Es wird überprüft, ob ein privater Schlüssel vorhanden ist.

  • Es wird überprüft, ob das Zertifikat aktiv ist, nicht abgelaufen ist und nicht widerrufen wurde.

In bestimmten Szenarien müssen Sie möglicherweise genauer steuern, welches Zertifikat verwendet wird und welche Validierungsüberprüfungen für das Zertifikat ausgeführt werden. Die MSBuild-Eigenschaft EnableSigningChecks steuert, welche der oben angegebenen Zertifikatprüfungen ausgeführt werden. Wenn Sie die Eigenschaft auf True (Standard) festlegen, werden alle Überprüfungen von Visual Studio durchgeführt. Wenn Sie die Eigenschaft auf False festlegen, führt Visual Studio nur die folgenden Aufgaben aus:

  • Es wird überprüft, ob ein privater Schlüssel vorhanden ist.

  • Es wird überprüft, ob der Wert der Enhanced Key Usage-Eigenschaft Code Signing enthält.

  • Es wird überprüft, ob das Zertifikat aktiv ist, nicht abgelaufen ist und nicht widerrufen wurde.

Hinweis

Wenn EnableSignignChecks auf "False" festgelegt ist, funktioniert das PowerShell-Skript ggf. nicht, da das benutzerdefinierte Zertifikat möglicherweise nicht mit allen Regeln übereinstimmt, die erforderlich sind, damit das Skript das App-Paket installiert. Weitere Informationen finden Sie unter Ein App-Paket lokal freigeben (Windows Store-Apps).

Auswählen eines alternativen Zertifikats

Visual Studio erstellt beim Anlegen des Projekts automatisch ein Zertifikat, aber Sie können auch ein eigenes Zertifikat erstellen oder ein vorhandenes Zertifikat verwenden, um ein Paket zu signieren.

So erstellen oder verwenden Sie ein alternatives Zertifikat

  1. Öffnen Sie im Projektmappen-Explorer das Kontextmenü für die Datei ".appxmanifest". Wählen Sie Öffnen mit und dann App-Manifest-Designer aus.

  2. Wählen Sie im App-Manifest-Designer die Registerkarte Verpacken aus, und klicken Sie dann auf die Schaltfläche Zertifikat auswählen.

  3. Erweitern Sie im Dialogfeld Zertifikat auswählen die Liste Zertifikat konfigurieren, und wählen Sie dann eine der folgenden Optionen aus:

    • Aus Zertifikatspeicher auswählen
      Wählen Sie eins der Zertifikate vom Typ Personal aus dem Zertifikatspeicher im Betriebssystem aus.

    • Aus Datei auswählen
      Wählen Sie eine vorhandene Zertifikatsdatei im Dateisystem aus.

    • Testzertifikat erstellen
      Erstellen Sie ein Zertifikat mit einer Publisher ID Ihrer Wahl. Sie können auch ein Kennwort festlegen.

Unabhängig davon, welche Option Sie auswählen, wird dem Projekt eine Zertifikatsdatei hinzugefügt, und die Projekteigenschaften PackageCertificateThumbprint und PackageCertificateKeyFile werden entsprechend aktualisiert.

Hinweis

Wenn während des Signierungsprozesses ein Fehler wie "Das angegebene Zertifikat ist ungültig. Es ist entweder abgelaufen oder es besteht ein anderes Problem" angezeigt wird, verwenden Sie den Manifest-Designer zum Erstellen eines benutzerdefinierten Zertifikats, mit dem das alte ersetzt wird.

Erneuern eines Zertifikats

Das von Visual Studio generierte Standardzertifikat läuft ein Jahr nach dem Erstellungsdatum ab. Bevor das Zertifikat abläuft, müssen Sie entweder das Zertifikat mit dem App-Manifest-Designer neu erstellen oder wie oben beschrieben ein anderes gültiges Zertifikat über den App-Manifest-Designer bereitstellen.

So erneuern Sie das Zertifikat

  1. Öffnen Sie im Projektmappen-Explorer das Kontextmenü für die Datei ".appxmanifest". Wählen Sie Öffnen mit und dann App-Manifest-Designer aus.

  2. Wählen Sie im App-Manifest-Designer die Registerkarte Verpacken aus, und klicken Sie dann auf die Schaltfläche Zertifikat auswählen.

  3. Erweitern Sie im Dialogfeld Zertifikat auswählen die Liste Zertifikat konfigurieren, und wählen Sie dann Testzertifikat erstellen aus.

  4. Klicken Sie im Dialogfeld Testzertifikat erstellen auf die Schaltfläche OK.

    Das Zertifikat wird in Visual Studio mit einem neuen Ablaufdatum erneut generiert.

Löschen oder Exportieren eines Zertifikats

Sie sollten ein Zertifikat löschen oder exportieren, das abgelaufen ist, oder das beeinträchtigt, beschädigt oder mit einem anderen Zertifikat ersetzt wurde. Weitere Informationen zum Löschen oder Exportieren eines Zertifikats finden Sie auf der Seite zum So wird's gemacht: Verwenden der Zertifikatkonsole.

Ändern installierter Apps

Wenn Dateien in einem installierten Paket geändert werden, kann die Signaturüberprüfung das Starten der App verhindern. Um ein Paket zu ändern, nehmen Sie die Änderungen in den ursprünglichen Quelldateien mit einer Entwicklerlizenz vor, und stellen Sie das geänderte Paket dann erneut bereit. Weitere Informationen über Entwicklerlizenzen finden Sie unter Anfordern einer Entwicklerlizenz (Windows Store-Apps).

Siehe auch

Konzepte

Überschreiben eines Paketmanifests (Windows Store-Apps)

Verpacken der Windows Store-App mit Visual Studio 2012