415 Stimmen

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

Wir haben gerade ein Upgrade unserer Visual Studio 2008-Projekte auf Visual Studio 2010 durchgeführt. Alle unsere Assemblies wurden mit einer starken Signatur versehen. Verisign Code Signing-Zertifikat. Seit dem Upgrade erhalten wir ständig den folgenden Fehler:

Die folgende Schlüsseldatei kann nicht importiert werden: Firmenname.pfx. Die Schlüsseldatei ist möglicherweise passwortgeschützt. Versuchen Sie zur Behebung des Problems, das Zertifikat erneut zu importieren, oder installieren Sie das Zertifikat manuell auf dem Strong Name CSP mit dem folgenden Schlüsselcontainernamen: VS_KEY_3E185446540E7F7A

Bei einigen Entwicklern ist dies der Fall, bei anderen nicht. Einige Methoden zur Behebung dieses Problems, die in einigen Fällen funktionierten, sind:

  • Neuinstallation der Schlüsseldatei über den Windows Explorer (Rechtsklick auf die PFX-Datei und Klick 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 Rechnern, die von Visual Studio 2008 aktualisiert wurden, erhalten Sie diese Option nicht.

Ich habe versucht, die SN.EXE Dienstprogramm (Strong Name Tool), um den Schlüssel mit dem Strong Name CSP zu registrieren, wie die Fehlermeldung vorschlägt, aber immer, wenn ich das Tool mit irgendwelchen Optionen mit der Version ausführe, die mit Visual Studio 2010 geliefert wurde, listet SN.EXE nur seine Befehlszeilenargumente auf, anstatt etwas zu tun. Dies geschieht unabhängig davon, welche Argumente ich angebe.

Warum passiert das, und was sind klare Schritte, um das Problem zu lösen? Ich bin kurz davor, aufzugeben ClickOnce Installationen und Microsoft Code Signing.

480voto

Brandon Manchester Punkte 4913

Auch ich hatte dieses Problem. Ich konnte das Problem beheben, indem ich Folgendes ausführte
sn -i <KeyFile> <ContainerName> ( installiert das Schlüsselpaar in einen benannten Container ).

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

Ausgehend von Ihrem Beitrag würde das wie folgt aussehen

sn -i companyname.pfx VS_KEY_3E185446540E7F7A

Wenn Sie die Lösung in VS 2010 geladen haben, können Sie einfach mit der rechten Maustaste auf die PFX-Datei aus dem Projektmappen-Explorer klicken und "Eingabeaufforderung öffnen" wählen, wodurch das .net 2010 cmd-Eingabeaufforderungstool im richtigen Verzeichnis gestartet wird.

Bevor ich diesen sn-Befehl ausgeführt habe, habe ich das pfx neu installiert, indem ich mit der rechten Maustaste darauf geklickt und "Installieren" gewählt habe, aber das hat nicht funktioniert. Nur etwas zu beachten, wie es die Kombination von beiden, die die Lösung zur Verfügung gestellt sein könnte.

Ich hoffe, dass dies zur Lösung Ihres Problems beiträgt.

6 Stimmen

Danke Brandon - ja, das, wie auch die manuelle Neuinstallation der Schlüsseldatei, löst das Problem "irgendwie". Das Problem ist, dass, sobald Sie die Schlüsseldatei einchecken, alle anderen Benutzer, die diese eingecheckte Schlüsseldatei verwenden, von diesem Fehler betroffen sind. Wenn einer dieser Benutzer seinen "Fix" eincheckt und ich die neueste Version bekomme, ist mein Rechner wieder kaputt... und so weiter. Microsoft hat ein Trouble-Ticket zu diesem Problem erstellt und es dem VS2010-Team und dem VSS-Team zugewiesen.

2 Stimmen

Interessant. Ich bin nicht auf dieses Problem gestoßen, als ich die pfx zum neuen CSP hinzugefügt habe. Meines Wissens ändert SN -i die pfx-Datei nicht, so dass Sie danach nichts mehr einchecken müssen. Wenn Sie jedoch die pfx-Datei auf irgendeine Weise ändern würden, z. B. durch Zurücksetzen des Kennworts, würde dies zu einem Problem führen, da die pfx-Datei geändert würde. Wird Ihre Lösung mit dieser pfx-Datei von einem anderen Rechner aus erstellt? Wenn ja, dann ist die pfx-Datei korrekt, sie ist nur nicht auf den richtigen CSP auf Ihrem Rechner eingestellt, der Probleme beim Erstellen hat.

3 Stimmen

Zuerst versuchte ich es nur mit dem Teil sn -i, aber es meldete, dass das Passwort falsch sei (obwohl es korrekt war). Ich entfernte das Zertifikat, installierte es neu und dann funktionierte sn -i... Das bestätigt im Grunde, dass für mich beide Schritte erforderlich waren. Installieren Sie das Zertifikat neu und führen Sie dann den Befehl sn aus.

138voto

MagicBox Punkte 1351

Ich habe eine Lösung entdeckt, die es Ihnen ermöglicht, erfolgreich in einer Umgebung mit mehreren Entwicklern zu arbeiten:

Anstatt das Passwort zu ändern (wodurch die .pfx-Datei geändert wird), neu wählen. die .pfx-Datei aus der Combobox. Daraufhin wird der Passwort-Dialog aufgerufen. Nach Eingabe des Passworts wird das Projekt mit OK erstellt. Jeder Entwickler kann dies auf seinem lokalen Rechner tun, ohne die .pfx-Datei tatsächlich zu verändern.

Ich habe immer noch Probleme mit dem Signieren von Baugruppen auf unserem Buildserver. Ich erhalte dort den gleichen Fehler, aber die Verwendung der Methode sn.exe -i behebt das Problem für den Buildserver nicht.

5 Stimmen

Ich habe eine Weile damit verbracht, dies auch auf unserem TFS-Build-Server zum Laufen zu bringen. Mir wurde klar, dass ich als ich selbst angemeldet war und nicht als das Build-Service-Konto, kein Wunder, dass es nicht gefunden werden konnte.

8 Stimmen

Dies sollte als Antwort markiert werden, da die derzeit markierte Antwort in einer Umgebung mit mehreren Entwicklern nicht funktionieren wird. Gut gemacht.

0 Stimmen

Wenn Sie dieselbe .pfx-Datei verwenden, um mehrere Baugruppen/Projekte innerhalb einer Lösung zu signieren, brauchen Sie diesen Schritt nur für ein Projekt auszuführen, und er gilt für alle Projekte. Funktioniert hervorragend.

49voto

Beached Punkte 1516

Ich hatte das gleiche Problem, und das Löschen des Speichers und das Lesen haben nicht funktioniert. Ich musste das Folgende tun.

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

  • Führen Sie den folgenden Befehl 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.

2 Stimmen

Danke!!! Ich glaube, das hat bei mir funktioniert. Ich habe mir openssl hier geholt: gnuwin32.sourceforge.net/packages/openssl.htm

0 Stimmen

Ich würde gerne die Option hinzufügen, das eigentliche Zertifikat in das pfx einzubinden: openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt -keysig -keyex

0 Stimmen

Stellen Sie sicher, dass Sie openssl als Administrator ausführen, sonst erhalten Sie die Fehlermeldung "unable to write 'random state'". Außerdem: Ich musste immer noch Brandon Manchesters Antwort mit dem "sn -i ..."-Ding machen, nachdem ich die openssl-Sache gemacht hatte.

40voto

Mike F Punkte 381

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

Ich habe herausgefunden, dass dies funktioniert - Rechtsklick in Lösung Explorer und schließen Sie sie aus dem Projekt aus. Klicken Sie auf Alle Dateien anzeigen klicken Sie mit der rechten Maustaste und fügen Sie es erneut in das Projekt ein. Jetzt noch ausstehende Änderungen rückgängig machen...

Aus irgendeinem Grund hat sich das für mich erledigt und war relativ schmerzlos!

0 Stimmen

Es zurückzunehmen, hat nicht geholfen. Wusste nicht, dass es die Pfx aus den Projekteinstellungen entfernt. Ich denke, die Antwort liegt in der Antwort von Stefan stackoverflow.com/a/14644793/1735721

0 Stimmen

Diese Antwort ist großartig. Bei mir hat es funktioniert, und es ist so einfach.

0 Stimmen

Funktioniert bei mir (VS2017 15.7.4). Vielen Dank für die nette und schnelle Lösung.

37voto

Dariusz Punkte 13548

Ich habe festgestellt, dass man in manchen Fällen versuchen sollte löschen diese Taste vor Sie installieren es. Gehen Sie also wie folgt vor:

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

1 Stimmen

Damit ist die Sache für mich erledigt! Die Installation selbst schlug mit Objekt existiert bereits fehl.

0 Stimmen

Das habe ich auch versucht, aber es hat nicht geholfen. Könnte etwas mit dem Zertifikat selbst nicht in Ordnung sein?

2 Stimmen

Danke, die Beseitigung muss so durchgeführt werden admin -- wenn man als normaler Benutzer ausgeführt wird, erhält man die irreführende Fehlermeldung "Strong name key container not found".

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X