it-swarm.com.de

Die Schlüsseldatei 'blah.pfx' kann nicht importiert werden - Fehler 'Die Schlüsseldatei ist möglicherweise kennwortgeschützt'

Wir haben gerade unsere Visual Studio 2008-Projekte auf Visual Studio 2010 aktualisiert. Alle unsere Assemblys wurden mit einem Verisign Codesignaturzertifikat signiert. Seit dem Upgrade erhalten wir ständig den folgenden Fehler:

Die folgende Schlüsseldatei kann nicht importiert werden: companyname.pfx. Die Schlüsseldatei ist möglicherweise kennwortgeschützt. Versuchen Sie, das Zertifikat erneut zu importieren, oder installieren Sie das Zertifikat mit dem folgenden Schlüsselcontainernamen manuell in den CSP für starke Namen: VS_KEY_3E185446540E7F7A

Dies geschieht auf einigen Entwicklermaschinen und nicht auf anderen. Einige Methoden, die verwendet wurden, um dieses Problem zu beheben, waren u. A .:

  • Erneutes Installieren der Schlüsseldatei über den Windows Explorer (klicken Sie mit der rechten Maustaste auf die PFX-Datei und klicken Sie auf Installieren)
  • Wenn Sie Visual Studio 2010 zum ersten Mal auf einem neuen Computer installieren, werden Sie beim ersten Öffnen des Projekts zur Eingabe des Kennworts aufgefordert, und dann funktioniert es. Auf Computern, die von Visual Studio 2008 aktualisiert wurden, ist diese Option nicht verfügbar.

Ich habe versucht, den Schlüssel mit dem Dienstprogramm SN.EXE (Strong Name Tool) wie in der Fehlermeldung angegeben beim Strong Name CSP zu registrieren, aber immer dann, wenn ich das Tool mit den entsprechenden Optionen ausführe Mit Visual Studio 2010 listet SN.EXE nur die Befehlszeilenargumente auf, anstatt etwas zu tun. Dies geschieht unabhängig von den von mir angegebenen Argumenten.

Warum passiert das und was sind klare Schritte, um es zu beheben? Ich werde aufgeben ClickOnce installiert und Microsoft Code signiert.

384
JasonD

Ich bin auch auf dieses Problem gestoßen. Ich konnte das Problem durch Ausführen beheben
sn -i <KeyFile> <ContainerName> ( installiert ein Schlüsselpaar in einen benannten Container ).

sn wird normalerweise als Teil eines Windows SDK installiert. Zum Beispiel C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe. Höchstwahrscheinlich befindet sich dieser Speicherort nicht im Suchpfad für Ihre Standardumgebung. Die von Visual Studio installierte "Developer Command Prompt" fügt jedoch zusätzliche Informationen hinzu, die normalerweise den richtigen Speicherort enthalten.

Basierend auf deinem Beitrag würde das so aussehen

sn -i companyname.pfx VS_KEY_3E185446540E7F7A

Dies muss vom Speicherort Ihrer PFX-Datei ausgeführt werden. Wenn Sie die Lösung in VS 2010 geladen haben, können Sie einfach mit der rechten Maustaste auf die pfx-Datei im Projektmappen-Explorer klicken und die Option Eingabeaufforderung öffnen auswählen, in der das .net 2010 cmd-Eingabeaufforderungstool gestartet wird das richtige Verzeichnis.

Bevor ich diesen Befehl ausgeführt habe, habe ich die pfx neu installiert, indem ich mit der rechten Maustaste darauf geklickt habe und Install gewählt habe, aber das hat nicht funktioniert. Nur etwas zu beachten, da möglicherweise die Kombination aus beidem die Lösung darstellt.

Ich hoffe, dies hilft Ihnen, Ihr Problem zu lösen.

438

Ich habe ein Update gefunden, mit dem Sie erfolgreich in einer Umgebung mit mehreren Entwicklern arbeiten können:

Anstatt das Kennwort zu ändern (wodurch die PFX-Datei geändert wird), erneut auswählen die PFX-Datei aus dem Kombinationsfeld. Daraufhin wird der Kennwortdialog aufgerufen. Nach Eingabe des Passworts wird das Projekt in Ordnung erstellt. Jeder Entwickler kann dies auf seinem lokalen Computer tun, ohne die PFX-Datei tatsächlich zu ändern.

Ich habe immer noch Probleme damit, Assemblys auf unserer Build-Server-Maschine zu signieren. Dort wird derselbe Fehler angezeigt, die Verwendung der Methode sn.exe -i behebt jedoch nicht das Problem für den Buildserver.

122
MagicBox

Ich hatte das gleiche Problem und das Löschen des Ladens und das Lesen funktionierte nicht. Ich musste folgendes tun.

  • Holen Sie sich eine Kopie von OpenSSL . Es ist verfügbar für Windows . Oder verwenden Sie eine Linux-Box, wie sie so ziemlich alle haben.

  • Führen Sie Folgendes aus, um in eine Schlüsseldatei zu exportieren:

    openssl pkcs12 -in certfile.pfx -out backupcertfile.key
    
    openssl pkcs12 -export -out certfiletosignwith.pfx -keysig -in backupcertfile.key
    

In den Projekteigenschaften können Sie dann die PFX-Datei verwenden.

40
Beached

Ich habe zu früh gesprochen! Neuaufbau brachte die Fehler wieder ins Spiel ...

Ich habe festgestellt, dass dies funktioniert - Rechtsklick in Projektmappen-Explorer und aus dem Projekt ausschließen. Klicken Sie auf Alle Dateien anzeigen , klicken Sie mit der rechten Maustaste und fügen Sie sie jetzt wieder in das Projekt ein. Jetzt ausstehende Änderungen rückgängig machen ...

Aus irgendeinem Grund hat dies für mich geklärt und war relativ schmerzlos!

35
Mike F

VSCommands 2010 (Plugin für Visual Studio) kann dies automatisch für Sie beheben. Klicken Sie mit der rechten Maustaste auf Fehler, und klicken Sie im Menü auf Fix anwenden. Sie können aus der Visual Studio-Galerie herunterladen .

31
Jarek Kardas

Ich habe festgestellt, dass Sie in einigen Fällen versuchen sollten, diesen Schlüssel zu löschen , bevor Sie Sie installieren es. Also mache folgendes:

  1. sn -d VS_XXXX
  2. sn -i mykey.pfx VS_XXX
31
Dariusz

Nachdem ich all diese Lösungen ausprobiert hatte (und vieles mehr), stellte ich fest, dass das Problem woanders liegt. Für Menschen, die nach dem Kauf eines Zertifikats das gleiche Elend wie ich durchmachen, teile ich die Lösung für mein Problem.

Verhalten

Ich verstehe, dass 'sign' einen starken Namen und keinen authentischen Code auf ein DLL oder EXE. Deshalb funktioniert signtool wird in diesem Fall, aber ' sign 'in Visual Studio wird nicht funktionieren.

Grund

In der Vergangenheit hatte ich Erfahrung mit Zertifikaten von Verisign. Sie haben einen KeySpec=2 Im Zertifikat - der mit der 'sign'-Funktionalität in Visual Studio verwendet wird. Diese Zertifikate funktionieren sowohl für Visual Studio als auch für signtool.

Ich habe jetzt Zertifikate von Comodo gekauft, die einen falschen KeySpec=1 In den Codesignaturzertifikaten enthalten. Das bedeutet, dass diese Zertifikate gut mit signtool (authenticode), aber nicht mit starken Namen (dem Dropdown-Zeichen) funktionieren.

Lösung

Es gibt zwei Möglichkeiten, dieses Problem zu lösen:

  1. Erstellen Sie mit sn -k [name].snk Ein separates Zertifikat für Ihren starken Namen. Signieren Sie die Assembly mit snk und verwenden Sie anschließend signtool mit Ihrem Codesignaturzertifikat, um die DLL/EXE mit der Authenticode-Signatur zu signieren. Obwohl dies seltsam erscheint, ist dies meines Erachtens ein korrekter Umgang mit Zertifikaten, da starke Namen einen anderen Zweck haben als authentischer Code (siehe auch dieser Link für Einzelheiten zur Funktionsweise).
  2. Importieren Sie Ihr Zertifikat als KeySpec=2. Die Vorgehensweise hierfür ist hier detailliert .

Da ich mehrere starke Namen verwenden möchte, verwende ich derzeit Option (1), obwohl Option (2) auch funktioniert.


Um sicherzustellen, dass diese Lösung auch in Zukunft nicht verloren geht, gehen Sie wie folgt vor:

  1. Verwenden Sie die "Zertifikate" MMC Exportieren Sie das vorhandene Keyset (KeySpec=1) In eine PFX-Datei. Hinweis: Bitte sichern Sie diese Datei an einem sicheren Ort und testen Sie, ob die Datei importiert werden kann OK auf einer anderen Maschine, wenn Sie wirklich auf Nummer sicher gehen wollen!
  2. Löschen Sie das vorhandene Zertifikat aus dem Kryptospeicher (stlll mit der MMC).
  3. Öffnen Sie eine CMD-Eingabeaufforderung.
  4. Importieren Sie die PFX-Datei mit dem folgenden Befehl:
    1. certutil -importPFX -user <pfxfilename> AT_SIGNATURE
    2. Geben Sie bei Aufforderung die Passphrase für die PFX ein.

Sie sollten jetzt ein Keyset/Zertifikat mit KeySpec=2 Haben. Bei Bedarf können Sie diese nun mit MMC erneut in eine andere PFX-Datei exportieren.

26
atlaste

Um dieses Problem in Visual Studio 2012 zu beheben, klicken Sie mit der rechten Maustaste auf das Projekt, Eigenschaften -> "Signieren", und deaktivieren Sie das Kontrollkästchen "ClickOnce-Manifeste signieren".

9
Romeo

Ich habe die Schlüsseldatei (pfx) im Dropdown-Feld "Wählen Sie eine Schlüsseldatei mit starkem Namen" erneut ausgewählt und dann im Popup-Fenster "PASSWORT EINGEBEN" ein Kennwort eingegeben. Mein Projekt wurde gespeichert und neu erstellt. Die Erstellung war erfolgreich.

  • Öffnen Sie Projekteigenschaften.
  • Klicken Sie auf den Abschnitt Signieren.
  • Wählen Sie den aktuellen Wert im Dropdown-Feld erneut aus.

enter image description here

  • Visual Studio fordert Sie jetzt zur Eingabe des Kennworts auf. Geben Sie es ein.

enter image description here

  • Speichern Sie Ihr Projekt und erstellen Sie es neu.

  • Wenn die folgende Fehlermeldung angezeigt wird: "Es wurde versucht, auf ein nicht vorhandenes Token zu verweisen", ignorieren Sie es einfach und fahren Sie mit den folgenden Schritten fort

  • Klicken Sie auf die Schaltfläche "Passwort ändern":

enter image description here

  • Geben Sie das ursprüngliche Passwort in alle drei Felder ein und klicken Sie auf OK. Wenn Sie Ihr Passwort ändern möchten (oder wenn Ihr altes Passwort die Komplexitätsanforderungen nicht erfüllt), können Sie dies jetzt tun.

  • Speichern Sie Ihr Projekt und erstellen Sie es neu.

Mehr Info ..

8
Bala Kumar

Als Problemumgehung habe ich versucht, Visual Studio 2010 als Administrator auszuführen, und es hat bei mir funktioniert.

Ich hoffe das hilft.

6
user350076

Als der ursprüngliche Autor der Arbeit an dem Connect-Fehlerbericht gibt es ZWEI Varianten dieser Nachricht (die ich später entdeckt habe).

Für eine Variante verwenden Sie sn.exe (normalerweise, wenn Sie starke Namen verwenden), um den Schlüssel in den Speicher für starke Namen zu importieren.

Die andere Variante, für die Sie certmgr zum Importieren verwenden, ist das Codesignieren für Dinge wie die einmalige Bereitstellung (beachten Sie, dass Sie für beide Zwecke dasselbe Zertifikat verwenden können).

Hoffe das hilft.

4
PeterI

Bei mir hat nichts geklappt, aber dann habe ich mir den Zertifikatsmanager (mmc.exe) angesehen. Das Zertifikat wurde nicht in den persönlichen Speicher importiert, daher habe ich es manuell importiert und dann das Projekt kompiliert.

Siehe Signieren von ClickOnce-Manifesten und Assembly mit starkem Namen mithilfe der Signierseite des Visual Studio Project Designers, Signieren von Assemblys.

3
Samuel

Mein Problem war, dass der TFS Build Controller als Netzwerkdienst ausgeführt wurde und ich aus irgendeinem Grund nicht verstand, warum die Visual Studio Build Host-Dienstzertifikate nicht verwendet wurden. Ich habe die Identität des Visual Studio Build-Dienstes in etwas Verwaltbareres geändert, sichergestellt, dass er über Rechte auf dem TFS-Server verfügt, und die Zertifikate mithilfe der MMC manuell hinzugefügt.

Das Problem bestand auch darin, dass MSBuild die kennwortgeschützten Zertifikate nicht zum Speicher hinzufügen kann.

2
Sentinel

Ich hatte das gleiche Problem, nachdem ich meine Windows-Installation auf ein SSD verschoben hatte. Keine der anderen Lösungen hat für mich funktioniert.

Meine Lösung bestand darin, die Projektdatei in Notepad zu öffnen und alle Verweise auf PFX-Schlüssel zu entfernen. Öffnen Sie nach dem Speichern der Datei die Projektmappe in Visual Studio. Gehen Sie zu Projekt -> Eigenschaften -> Signieren. Im Kombinationsfeld "Schlüsseldatei mit starkem Namen auswählen" sollten keine Schlüssel angezeigt werden. Navigieren Sie im Kombinationsfeld zum Schlüssel, wählen Sie ihn aus, und Ihr Projekt kann jetzt erstellt werden.

2
GoalMaker

Das erneute Auswählen der Schlüsseldatei in einer Combobox und das Eingeben des Kennworts helfen uns dabei.

Es muss jedoch jedes Mal durchgeführt werden, wenn sich die Schlüsseldatei ändert, und es scheint nicht in Ordnung zu sein.

2
user1113289

Okay, das hat bei mir funktioniert. Öffnen Sie die alte Projektmappe/das alte Projekt als Administrator in Visual Studio 2010 und öffnen Sie die neue oder kopierte Projektmappe/das kopierte Projekt. Entfernen Sie als Administrator die kopierte PFK-Datei in der neuen Visual Studio 2010-Projektmappe bzw. im neuen Visual Studio 2010-Projekt, wechseln Sie zu den Projekteigenschaften, und deaktivieren Sie sie.

Wenn beide Projekte geöffnet sind, kopieren und fügen Sie sie in das neue ein. Gehen Sie zu den Projekteigenschaften und wählen Sie Erstellen. Ich habe Visual Studio geöffnet und geschlossen und es auch nach dem Entfernen aus dem neuen Projekt erstellt, bevor ich es aus dem alten Projekt kopiert und ausgewählt habe. Ich habe den Fehler zu Beginn dieses Beitrags zuerst erhalten, als ich das Projekt kopierte und versuchte, es zu erstellen.

1
Jason Robertson

Ich hatte ein ähnliches Problem, aber nach dem Auswählen des Pfx in einer ComboBox mit "starkem Namen" und dem Eingeben des Kennworts wurde immer noch ein ähnlicher Fehler angezeigt (ohne den Containernamen):

Die folgende Schlüsseldatei kann nicht importiert werden: companyname.pfx. Die Schlüsseldatei ist möglicherweise kennwortgeschützt. Versuchen Sie, das Zertifikat erneut zu importieren, oder installieren Sie das Zertifikat manuell, um dies zu beheben

Außerdem wurde der Zertifikatsinformationsbereich "ClickOnce-Manifeste signieren" nicht ausgefüllt.

Ich habe auf meinem pfx "Aus Datei auswählen ..." ausgeführt und das Problem wurde behoben.

1
surfen

In meinem Szenario verwendete der Build-Service nicht dasselbe Benutzerkonto, mit dem ich den Schlüssel mit sn.exe Importiert hatte.

Nachdem ich das Konto in mein Administratorkonto geändert habe, funktioniert alles einwandfrei.

Alle hier beschriebenen Methoden haben mir nicht geholfen. Als ich jedoch die * .pfx-Datei aus meinem Projekt löschte und sie erneut zur Signatur der Assembly hinzufügte, erstellte ich mein Projekt mit ohne Fehler! Ich kann die Gründe nicht erklären. Aber es hat bei mir geklappt.

1

Dies hat mein Problem gelöst: Öffnen Sie Ihr VS-Projekt

Doppelklicken Sie auf Package.appxmanifest

Gehen Sie zur Registerkarte Verpackung

klicken Sie auf Zertifikat auswählen

klicken Sie auf Zertifikat konfigurieren

wählen Sie aus der Datei example.pfx aus und verwenden Sie diese Einheit oder etwas anderes, das erstellt wurde

1
Milad Xandi

Ich habe den gleichen Fehler bekommen. In meinem Fall habe ich alles versucht, aber ich konnte das Ergebnis nicht erzielen.

Endlich wurde mir klar, dass in meinem Fall der Grund für den Fehler darin bestand, dass das Zertifikatspasswort nicht oder falsch eingegeben wurde. Der Fehler verschwand, als ich das Passwort dynamisch korrekt eingab. erfolgreich

0
Hamit YILDIRIM

Ich habe dieses Problem für mich gelöst, indem ich die folgende Zeile in der .csproj-Datei des Visual Studio-Projekts geändert habe:

Dies warf den Fehler "kann nicht importieren":

<PropertyGroup>
<SignManifests>true</SignManifests>
</PropertyGroup>

Durch Ändern des Werts in false wurde der Fehler behoben.

0
Kyle Julé