Wir haben gerade unsere Visual Studio 2008-Projekte auf Visual Studio 2010 aktualisiert. Alle unsere Assemblys wurden mit einem Verisign-Codesignaturzertifikat stark signiert . Seit dem Upgrade wird ständig der folgende Fehler angezeigt:
Die folgende Schlüsseldatei kann nicht importiert werden: companyname.pfx. Die Schlüsseldatei ist möglicherweise passwortgeschützt. Um dies zu korrigieren, versuchen Sie, das Zertifikat erneut zu importieren, oder installieren Sie das Zertifikat manuell mit dem folgenden Schlüsselcontainernamen auf dem Strong Name CSP: VS_KEY_3E185446540E7F7A
Dies geschieht auf einigen Entwicklercomputern und nicht auf anderen. Einige Methoden zur Behebung dieses Problems, die manchmal funktionierten, umfassen:
- Neuinstallation der Schlüsseldatei aus dem 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. Anschließend 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) beim Strong Name CSP zu registrieren, wie in der Fehlermeldung angegeben. Wenn ich das Tool jedoch mit Optionen ausführe, die die mit Visual Studio 2010, SN, gelieferte Version verwenden .EXE listet nur seine Befehlszeilenargumente auf, anstatt irgendetwas zu tun. Dies geschieht unabhängig davon, welche Argumente ich liefere.
Warum passiert das und was sind klare Schritte, um es zu beheben? Ich werde die ClickOnce- Installationen und die Microsoft- Codesignatur aufgeben .
Ich habe einen Fix entdeckt, mit dem Sie in einer Umgebung mit mehreren Entwicklern erfolgreich erstellen können:
Anstatt das Kennwort zu ändern (wodurch die PFX-Datei geändert wird), wählen Sie die PFX-Datei erneut aus der Combobox aus. Dies ruft dann den Passwortdialog auf. Nach Eingabe des Passworts wird das Projekt OK erstellt. Jeder Entwickler kann dies auf seinem lokalen Computer tun, ohne die PFX-Datei zu ändern.
Ich habe immer noch Probleme damit, Assemblys auf unserem Build-Server-Computer zu signieren. Ich erhalte dort den gleichen Fehler, aber die Verwendung der Methode sn.exe -i behebt das Problem für den Buildserver nicht.
quelle
Ich hatte das gleiche Problem und das Löschen des Geschäfts und das Lesen funktionierten nicht. Ich musste folgendes tun.
Holen Sie sich eine Kopie von OpenSSL . Es ist für Windows verfügbar . Oder verwenden Sie eine Linux-Box, da sie so ziemlich alle haben.
Führen Sie Folgendes aus, um in eine Schlüsseldatei zu exportieren:
Dann können Sie in den Projekteigenschaften die PFX-Datei verwenden.
quelle
Ich habe zu früh gesprochen! Rebuild brachte die Fehler wieder ins Spiel ...
Ich fand, dass dies funktioniert - klicken Sie mit der rechten Maustaste in den Projektmappen- Explorer und schließen Sie es aus dem Projekt aus. Klicken Sie auf Alle Dateien anzeigen , klicken Sie mit der rechten Maustaste und fügen Sie sie nun wieder in das Projekt ein. Jetzt ausstehende Änderungen rückgängig machen ...
Aus irgendeinem Grund hat das für mich geklärt und war relativ schmerzlos!
quelle
Ich habe festgestellt, dass Sie in einigen Fällen versuchen sollten, diesen Schlüssel zu löschen, bevor Sie ihn installieren. Gehen Sie also wie folgt vor:
sn -d VS_XXXX
sn -i mykey.pfx VS_XXX
quelle
VSCommands 2010 (Plugin für Visual Studio) kann dies automatisch für Sie beheben. Klicken Sie einfach mit der rechten Maustaste auf Fehler und klicken Sie im Menü auf Fix anwenden. Sie können es aus der Visual Studio-Galerie herunterladen .
quelle
Nachdem ich all diese Lösungen (und vieles mehr) ausprobiert hatte, stellte ich fest, dass das Problem woanders liegt. Für Menschen, die nach dem Kauf eines Zertifikats das gleiche Elend wie ich haben, teile ich die Lösung für mein Problem.
Verhalten
Ich verstehe, dass 'sign' einen starken Namen und keinen Authenticode auf eine DLL oder EXE anwendet. Aus diesem Grunde Signtool wird in diesem Fall arbeiten, aber ‚Zeichen‘ in Visual Studio wird nicht funktionieren.
Grund
In der Vergangenheit habe ich Erfahrung mit Zertifikaten von Verisign. Sie haben ein
KeySpec=2
Zertifikat, das mit der Zeichenfunktion in Visual Studio verwendet wird. Diese Zertifikate funktionieren sowohl für Visual Studio als auch für signtool einwandfrei.Ich habe jetzt Zertifikate von Comodo gekauft, deren Codesignaturzertifikate falsch sind
KeySpec=1
. Das bedeutet, dass diese Zertifikate gut mit signtool (Authenticode) funktionieren, jedoch nicht mit starken Namen (Dropdown-Liste für Zeichen).Lösung
Es gibt zwei Möglichkeiten, um dieses Problem zu lösen:
sn -k [name].snk
. Signieren Sie die Assembly mit dem 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 Wissens ein korrekter Weg, um mit Zertifikaten umzugehen, da starke Namen einen anderen Zweck haben als Authenticode (siehe auch diesen Link für Details dazu, wie dies funktioniert).KeySpec=2
. Die Vorgehensweise hierzu finden Sie hier .Da ich mehrere starke Namen verwenden möchte, verwende ich derzeit Option (1), obwohl Option (2) auch funktioniert.
Um sicherzustellen, dass diese Lösung in Zukunft niemals verloren geht, gehen Sie wie folgt vor: Lösung 2:
KeySpec=1
) in eine PFX-Datei. Hinweis: Bitte sichern Sie diese Datei an einem sicheren Ort und testen Sie, ob die Datei auf einem anderen Computer einwandfrei importiert werden kann, wenn Sie wirklich auf Nummer sicher gehen möchten!certutil -importPFX -user <pfxfilename> AT_SIGNATURE
Sie sollten jetzt ein Keyset / Zertifikat mit haben
KeySpec=2
. Bei Bedarf können Sie diese nun mit der MMC erneut in eine andere PFX-Datei exportieren.quelle
Um dieses Problem in Visual Studio 2012 zu beheben, klicke ich mit der rechten Maustaste auf das Projekt, Eigenschaften -> "Signieren" und deaktiviere dann das Kontrollkästchen "ClickOnce-Manifeste signieren".
quelle
Ich habe die Pfx-Datei (Key) im Dropdown-Feld "Schlüsseldatei mit starkem Namen auswählen" erneut ausgewählt und dann im Popup-Fenster "PASSWORT EINGEBEN" das Kennwort angegeben. Ich habe mein Projekt gespeichert und habe es erneut erstellt.
Speichern Sie Ihr Projekt und führen Sie eine Neuerstellung durch.
Wenn Sie eine Fehlermeldung erhalten: "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":
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 nicht den Komplexitätsanforderungen entspricht), können Sie dies jetzt tun.
Speichern Sie Ihr Projekt und führen Sie eine Neuerstellung durch.
Mehr Info..
quelle
Um dieses Problem zu umgehen, habe ich versucht, Visual Studio 2010 als Administrator auszuführen, und es hat bei mir funktioniert.
Ich hoffe das hilft.
quelle
Als ursprünglicher Autor der Umgehung des Connect-Fehlerberichts 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 dasselbe Zertifikat für beide Zwecke verwenden können).
Hoffe das hilft.
quelle
Bei mir hat nichts funktioniert, 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 Signaturen mit starken Namen mithilfe der Signaturseite von Visual Studio Project Designer, Signieren von Baugruppen .
quelle
Das erneute Auswählen der Schlüsseldatei in einer Combobox und das Eingeben eines Passworts hilft uns dabei.
Dies ist jedoch jedes Mal erforderlich, wenn sich die Schlüsseldatei ändert, und es scheint nicht in Ordnung zu sein.
quelle
Ich hatte das gleiche Problem, nachdem ich meine Windows-Installation auf eine SSD verschoben hatte . Keine der anderen Lösungen hat bei mir funktioniert.
Meine Lösung bestand darin, die Projektdatei im Editor zu öffnen und alle Verweise auf PFX-Schlüssel zu entfernen. Öffnen Sie nach dem Speichern der Datei die Lösung in Visual Studio. Gehen Sie zu Projekt -> Eigenschaften -> Signieren. Im Kombinationsfeld "Wählen Sie die Schlüsseldatei mit dem starken Namen aus" 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.
quelle
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 einen verwaltbareren geändert, sichergestellt, dass er über Rechte auf dem TFS-Server verfügt, und die Zertifikate mithilfe der MMC manuell hinzugefügt.
Das Problem war auch, dass MSBuild die passwortgeschützten Zertifikate nicht zum Store hinzufügen kann.
quelle
Ich hatte ein ähnliches Problem, aber nachdem ich den Pfx in einer ComboBox "Key Name Key File" ausgewählt und das Passwort eingegeben hatte, bekam ich immer noch einen ähnlichen Fehler (ohne den Containernamen-Teil):
Außerdem wurde das Zertifikatinformationsfenster "ClickOnce-Manifeste signieren" nicht ausgefüllt.
Ich habe "Aus Datei auswählen ..." auf meinem pfx ausgeführt und das Problem wurde behoben.
quelle
Alle hier beschriebenen Methoden haben mir nicht geholfen. Aber als ich die * .pfx-Datei aus meinem Projekt löschte und sie erneut zur Signatur der Assembly hinzufügte, erstellte ich mein Projekt ohne Fehler! Ich kann die Gründe nicht erklären. Aber es hat bei mir funktioniert.
quelle
Okay, das hat bei mir funktioniert. Öffnen Sie die alte Lösung / das alte Projekt als Administrator in Visual Studio 2010 und öffnen Sie die neue oder kopierte Lösung / das kopierte Projekt. Entfernen Sie als Administrator die kopierte pfk-Datei in der neuen Visual Studio 2010-Lösung / im neuen Visual Studio 2010-Projekt, gehen Sie zu den Projekteigenschaften und deaktivieren Sie sie.
Wenn beide Projekte geöffnet sind, kopieren Sie sie 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 kopiert und versucht habe, es zu erstellen.
quelle
In meinem Szenario verwendete der Build-Service nicht dasselbe Benutzerkonto, mit dem ich den Schlüssel importiert habe
sn.exe
.Nachdem Sie das Konto in mein Administratorkonto geändert haben, funktioniert alles einwandfrei.
quelle
Dies löste mein Problem: Ö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 und verwenden Sie example.pfx, um die Einheit oder etwas anderes zu erstellen
quelle
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 warf den Fehler "kann nicht importieren":
Durch Ändern des Werts in false wurde der Fehler behoben.
quelle
Ich habe den gleichen Fehler bekommen. In meinem Fall habe ich alle oben genannten Versuche unternommen, 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 Zertifikatkennwort nicht oder falsch eingegeben wurde. Der Fehler verschwand, als ich das Passwort dynamisch korrekt eingegeben habe. erfolgreich
quelle
Leider hat bei mir kein hier genannter Ansatz funktioniert. Ich muss ein paar PFX in einem Docker-Container registrieren und das Passwort über die Kommandozeile übergeben.
Deshalb habe ich den
sn.exe -i <infile> <container>
Befehl in C # mithilfe des RSACryptoServiceProvider neu entwickelt . Die Quelle und die App befinden sich auf GitHub im SnInstallPfx- Projekt.Das SnInstallPfx App akzeptiert einen PFX-Schlüssel und sein Passwort. Es berechnet den Schlüsselcontainernamen (VS_KEY_ *) automatisch (aus dem MSBuild-Quellcode entlehnt) und installiert ihn unter dem starken Namen CSP.
Verwendungszweck:
quelle
Für wen verwendet GitLab-Läufer:
./gitlab-runner.exe install --user ".\ENTER-YOUR-USERNAME" --password "ENTER-YOUR-PASSWORD"
(Ich musste zuerst anhalten und deinstallieren.)sn -i certificate.pfx VS_KEY_C***6
Der Containername wird in der fehlgeschlagenen Jobausgabe auf GitLab vorgeschlagen (msbuild-Ausgabe).
quelle