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.

1voto

honzajscz Punkte 2572

Leider hat keine der hier erwähnten Methoden bei mir funktioniert. Ich muss das Paar PFX in einem Docker-Container registrieren und das Passwort über die Kommandozeile übergeben.

Also habe ich das Programm neu entwickelt. sn.exe -i <infile> <container> Befehl in C# unter Verwendung der RSACryptoServiceProvider . Der Quelltext und die Anwendung sind auf GitHub in der SnInstallPfx Projekt.

Le site SnInstallPfx App akzeptiert einen PFX-Schlüssel und sein Passwort. Sie berechnet den Namen des Schlüsselcontainers (VS_KEY_*) automatisch (aus dem MSBuild-Quellcode) und installiert ihn im CSP mit dem starken Namen.

Verwendung:

SnInstallPfx.exe <pfx_infile> <pfx_password>
// or pass a container name if the default is not what you need (e.g. C++)
SnInstallPfx.exe <pfx_infile> <pfx_password> <container_name>

1voto

Für wen ist die Verwendung von GitLab-Läufern:

  • Bitte beachten Sie laufen. den Läufer mit einem Konto, bei dem Sie sich anmelden können: ./gitlab-runner.exe install --user ".\ENTER-YOUR-USERNAME" --password "ENTER-YOUR-PASSWORD" (Ich musste erst anhalten und deinstallieren)
  • folgen dieser Leitfaden zur Gewährung der bauen Benutzererlaubnis zur Anmeldung als Dienst
  • Anmeldung mit solchen bauen Benutzer
  • Verwenden Sie den in anderen Antworten vorgeschlagenen Befehl: sn -i certificate.pfx VS_KEY_C***6

der Containername wird in der Ausgabe des fehlgeschlagenen Auftrags auf GitLab vorgeschlagen (msbuild-Ausgabe) enter image description here

0voto

Hamit YILDIRIM Punkte 3566

Ich habe den gleichen Fehler. In meinem Fall habe ich alles oben genannte versucht, aber ich konnte das Ergebnis nicht erhalten.

Schließlich erkannte ich, dass in meinem Fall der Grund für den Fehler darin lag, dass das Zertifikatspasswort nicht oder falsch eingegeben worden war. Der Fehler verschwand, als ich das Kennwort dynamisch korrekt eingab. erfolgreich

0voto

Mark Mercer Punkte 73

In Visual Studio 2019 und einem .Net 5-Projekt bestand die Lösung für dieses Problem für mich darin, die .pfx-Datei einfach aus meiner Lösung auszuschließen, und es funktionierte sofort.

-2voto

Kyle Julé Punkte 125

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

Dies führte zu der Fehlermeldung "Import nicht möglich":

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

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

11 Stimmen

Normalerweise sind Assemblies für den Zweck signiert, und das Entfernen von SignManifests würde in einigen Umgebungen zu Problemen bei der Bereitstellung führen. Es ist also keine Lösung für ein Problem

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