Właśnie zaktualizowaliśmy nasze projekty Visual Studio 2008 do Visual Studio 2010. Wszystkie nasze zespoły były silnie podpisane przy użyciu certyfikatu podpisywania kodu Verisign . Od czasu aktualizacji stale pojawia się następujący błąd:
Nie można zaimportować następującego pliku klucza: nazwa firmy.pfx. Plik klucza może być chroniony hasłem. Aby to naprawić, spróbuj ponownie zaimportować certyfikat lub ręcznie zainstaluj certyfikat w silnym dostawcy CSP o następującej nazwie kontenera kluczy: VS_KEY_3E185446540E7F7A
Dzieje się tak na niektórych komputerach programistów, a nie innych. Niektóre metody zastosowane do rozwiązania tego problemu, które działały przez pewien czas, obejmują:
- Ponowna instalacja pliku klucza z Eksploratora Windows (kliknij prawym przyciskiem myszy plik PFX i kliknij Zainstaluj)
- Instalacja programu Visual Studio 2010 na świeżym komputerze po raz pierwszy wyświetla monit o podanie hasła przy pierwszym otwarciu projektu, a następnie działa. Na komputerach uaktualnionych z Visual Studio 2008 ta opcja nie jest dostępna.
Próbowałem użyć narzędzia SN.EXE (Strong Name Tool), aby zarejestrować klucz w programie Strong Name CSP, jak sugeruje komunikat o błędzie, ale za każdym razem, gdy uruchamiam narzędzie z dowolnymi opcjami przy użyciu wersji dostarczonej z Visual Studio 2010, SN .EXE po prostu wyświetla listę argumentów wiersza poleceń zamiast robić cokolwiek. Dzieje się tak niezależnie od tego, jakie argumenty przedstawię.
Dlaczego tak się dzieje i jakie są wyraźne kroki, aby to naprawić? Zaraz zrezygnuję z instalacji ClickOnce i podpisywania kodu Microsoft.
Znalazłem poprawkę, która pomaga pomyślnie budować w środowisku wielu programistów:
Zamiast zmieniać hasło (co powoduje zmianę pliku .pfx ), ponownie wybierz plik .pfx z listy rozwijanej. Następnie wywoływane jest okno dialogowe hasła. Po wprowadzeniu hasła projekt zostanie zbudowany OK. Każdy programista może to zrobić na swoim komputerze lokalnym bez modyfikowania pliku .pfx.
Nadal mam problemy z uzyskaniem podpisów zespołów na naszym komputerze z kompilacją serwera. Pojawia się tam ten sam błąd, jednak użycie metody sn.exe -i nie rozwiązuje problemu dla serwera.
źródło
Miałem ten sam problem i usunięcie sklepu i czytanie nie działało. Musiałem wykonać następujące czynności.
Uzyskaj kopię OpenSSL . Jest dostępny dla systemu Windows . Lub skorzystaj z Linux-a, ponieważ prawie wszystkie mają.
Uruchom następujące polecenie, aby wyeksportować do pliku klucza:
Następnie we właściwościach projektu możesz użyć pliku PFX.
źródło
Mówiłem za wcześnie! Rebuild przywrócił błędy do gry ...
Znalazłem to działa - kliknij prawym przyciskiem myszy w Eksploratorze rozwiązań i wyklucz go z projektu. Kliknij opcję Pokaż wszystkie pliki , kliknij prawym przyciskiem myszy i ponownie włącz go do projektu. Teraz cofnij oczekujące zmiany ...
Z jakiegoś powodu rozwiązało to problem i było stosunkowo bezbolesne!
źródło
Odkryłem, że w niektórych przypadkach powinieneś spróbować usunąć ten klucz przed jego zainstalowaniem. Wykonaj następujące czynności:
sn -d VS_XXXX
sn -i mykey.pfx VS_XXX
źródło
VSCommands 2010 (wtyczka do Visual Studio) może to naprawić automatycznie - wystarczy kliknąć błąd prawym przyciskiem myszy i wybrać polecenie Zastosuj poprawkę z menu. Możesz go pobrać z galerii Visual Studio .
źródło
Po wypróbowaniu wszystkich tych rozwiązań (i wielu innych) odkryłem, że problem leży gdzie indziej. Dla osób, które przechodzą tę samą nędzę, co ja po zakupie certyfikatu, podzielę się rozwiązaniem mojego problemu.
Zachowanie
Rozumiem, że „znak” stosuje silną nazwę, a nie autentyczny kod do DLL lub EXE. Dlatego signtool będzie działał w tym przypadku, ale „znak” w Visual Studio nie będzie działał.
Powód
W przeszłości miałem doświadczenie z certyfikatami Verisign. Mają
KeySpec=2
w certyfikacie - który jest używany z funkcją „podpisywania” w Visual Studio. Te certyfikaty działają dobrze zarówno dla Visual Studio, jak i signtool.Teraz kupiłem certyfikaty od Comodo, które mają niepoprawne
KeySpec=1
certyfikaty do podpisywania kodu. Oznacza to, że te certyfikaty działają poprawnie z signtool (autentode), ale nie z silnym nazewnictwem (lista rozwijana znaku).Rozwiązanie
Istnieją dwa sposoby rozwiązania tego problemu:
sn -k [name].snk
. Podpisz zestaw za pomocą snk, a następnie użyj signtool z certyfikatem do podpisywania kodu, aby podpisać DLL / EXE podpisem autentycznym. Chociaż wydaje się to dziwne, z tego, co rozumiem, jest to poprawny sposób postępowania z certyfikatami, ponieważ silne nazwy mają inny cel niż autentyczny kod (zobacz także ten link, aby dowiedzieć się, jak to działa).KeySpec=2
. Procedura tego jest szczegółowo opisana tutaj .Ponieważ chcę używać wielu silnych nazw, obecnie używam opcji (1), chociaż opcja (2) również działa.
Aby mieć pewność, że to rozwiązanie nigdy się nie zgubi w przyszłości, oto procedura rozwiązania 2:
KeySpec=1
) do pliku PFX. Uwaga: wykonaj kopię zapasową tego pliku w bezpiecznej lokalizacji i sprawdź, czy plik można zaimportować ok na innym komputerze, jeśli naprawdę chcesz go bezpiecznie odtwarzać!certutil -importPFX -user <pfxfilename> AT_SIGNATURE
Powinieneś teraz mieć zestaw kluczy / certyfikat z
KeySpec=2
. W razie potrzeby możesz teraz wyeksportować to do innego pliku PFX za pomocą MMC.źródło
Aby rozwiązać ten problem w Visual Studio 2012, klikam prawym przyciskiem myszy projekt, właściwości -> „podpisywanie”, a następnie odznaczam „Podpisuj manifesty ClickOnce”.
źródło
Ponownie wybrałem plik klucza (pfx) w polu rozwijanym „Wybierz plik klucza o silnej nazwie”, a następnie podałem hasło w oknie podręcznym „WPISZ HASŁO”. Zapisałem mój projekt i nie udało się go odbudować.
Zapisz swój projekt i przebuduj.
Jeśli pojawi się komunikat o błędzie: „Podjęto próbę odwołania się do tokena, który nie istnieje”, po prostu zignoruj go i kontynuuj poniższe kroki
Kliknij przycisk „Zmień hasło”:
Wprowadź oryginalne hasło we wszystkich trzech polach i kliknij OK. Jeśli chcesz zmienić hasło (lub jeśli stare hasło nie spełnia wymagań co do złożoności), możesz to zrobić teraz.
Zapisz swój projekt i przebuduj.
Więcej informacji..
źródło
W celu obejścia tego problemu próbowałem uruchomić program Visual Studio 2010 jako administrator i zadziałało to dla mnie.
Mam nadzieję, że to pomoże.
źródło
Jako oryginalny autor obejścia raportu o błędzie połączenia, istnieją DWIE warianty tego komunikatu (odkryłem później)
W jednym wariancie używasz sn.exe (zwykle, jeśli wykonujesz silne nazewnictwo), aby zaimportować klucz do sklepu z silnymi nazwami.
Innym wariantem, do którego używasz importu certmgr, jest podpisywanie kodów w przypadku wdrożenia typu „kliknij raz” (pamiętaj, że możesz użyć tego samego certyfikatu do obu celów).
Mam nadzieję że to pomoże.
źródło
Nic mi nie działało, ale potem poszedłem i zajrzałem do menedżera certyfikatów (mmc.exe). Certyfikat nie został zaimportowany do sklepu osobistego, więc zaimportowałem go ręcznie, a następnie skompilowałem projekt.
Zobacz Podpisywanie manifestu ClickOnce i podpisywanie złożenia pod silną nazwą przy użyciu strony podpisywania projektanta Visual Studio Project Designer, podpisywania zespołów .
źródło
Ponowne wybranie pliku klucza w comboboxie i wprowadzenie hasła pomaga nam to zrobić.
Ale należy to robić za każdym razem, gdy zmienia się plik klucza i wydaje się, że nie jest OK.
źródło
Miałem ten sam problem po przeniesieniu instalacji systemu Windows na dysk SSD . Żadne inne rozwiązanie nie działało dla mnie.
Moim rozwiązaniem było otwarcie pliku projektu w Notatniku i usunięcie wszystkich odniesień do kluczy PFX. Po zapisaniu pliku otwórz rozwiązanie w Visual Studio. Przejdź do projektu -> Właściwości -> Podpisywanie. W polu kombi „wybierz plik klucza z silną nazwą” nie powinny znajdować się żadne klucze. W polu kombi przejdź do klucza, wybierz go, a Twój projekt będzie mógł zostać zbudowany.
źródło
Mój problem polegał na tym, że kontroler kompilacji TFS działał jako usługa sieciowa iz jakiegoś powodu nie rozumiałem, dlaczego certyfikaty usługi Host budowania Visual Studio nie były używane. Zmieniłem tożsamość usługi Visual Studio Build na coś łatwiejszego do zarządzania, upewniłem się, że ma ona prawa na serwerze TFS i ręcznie dodałem certyfikaty za pomocą MMC.
Problem polegał również na tym, że MSBuild nie może dodać certyfikatów chronionych hasłem do sklepu.
źródło
Miałem podobny problem, ale po wybraniu pliku pfx w „pliku klucza silnej nazwy” ComboBox i wpisaniu hasła nadal otrzymuję podobny błąd (bez części nazwy kontenera):
Ponadto panel informacji o certyfikacie „Podpisuj manifesty ClickOnce” nie został zapełniony.
Zrobiłem „Wybierz z pliku ...” na mojej pfx i to rozwiązało problem.
źródło
Wszystkie opisane tutaj metody nie pomogły mi. Ale kiedy usunąłem plik * .pfx z mojego projektu i ponownie dodałem go do podpisania zestawu, zbudowałem projekt bez żadnego błędu! Nie umiem wyjaśnić powodów. Ale to zadziałało dla mnie.
źródło
Okej, to zadziałało dla mnie. Otwórz stare rozwiązanie / projekt jako administrator w Visual Studio 2010 i otwórz nowe lub skopiowane rozwiązanie / projekt. Jako administrator usuń skopiowany plik pfk z nowego rozwiązania / projektu Visual Studio 2010 i przejdź do właściwości projektu i odznacz go.
Po otwarciu obu projektów skopiuj wklej do nowego. Przejdź do właściwości projektu i wybierz Kompiluj. Otworzyłem i zamknąłem Visual Studio, a także po usunięciu z nowego projektu zbudowałem go przed skopiowaniem go ze starego projektu i wybraniem. Błąd pojawił się na początku tego postu, kiedy skopiowałem projekt i próbowałem go skompilować.
źródło
W moim scenariuszu usługa kompilacji nie korzystała z tego samego konta użytkownika, z którego zaimportowałem klucz
sn.exe
.Po zmianie konta na moje konto administratora wszystko działa dobrze.
źródło
To rozwiązało mój problem: otwórz swój projekt VS
Kliknij dwukrotnie Package.appxmanifest
Przejdź do zakładki Opakowanie
kliknij wybierz certyfikat
kliknij konfiguruj certyfikat
wybierz z pliku i użyj example.pfx, że ta jedność lub cokolwiek innego utworzono
źródło
Rozwiązałem ten problem dla siebie, zmieniając następujący wiersz w pliku .csproj projektu Visual Studio:
To spowodowało błąd „nie można zaimportować”:
Zmiana wartości na false spowodowała, że błąd zniknął.
źródło
Mam ten sam błąd. W moim przypadku próbowałem wszystkich powyższych, ale nie mogłem uzyskać rezultatu.
W końcu zdałem sobie sprawę, że w moim przypadku przyczyną błędu było to, że hasło certyfikatu nie zostało wprowadzone lub zostało wprowadzone nieprawidłowo. Błąd zniknął, gdy dynamicznie poprawnie wprowadziłem hasło. odnoszący sukcesy
źródło
Niestety, żadne z wymienionych tutaj podejść nie działało dla mnie. Muszę zarejestrować kilka plików PFX w kontenerze dokowanym i muszę przekazać hasło za pomocą wiersza polecenia.
Więc ponownie opracowałem
sn.exe -i <infile> <container>
polecenie w C # przy użyciu RSACryptoServiceProvider . Źródło i aplikacja znajdują się na GitHub w projekcie SnInstallPfx .Aplikacja SnInstallPfx akceptuje klucz PFX i jego hasło. Automatycznie oblicza nazwę kontenera kluczy (VS_KEY_ *) (pożyczoną z kodu źródłowego MSBuild) i instaluje ją pod silną nazwą CSP.
Stosowanie:
źródło
Dla kogo używa biegaczy GitLab:
./gitlab-runner.exe install --user ".\ENTER-YOUR-USERNAME" --password "ENTER-YOUR-PASSWORD"
(najpierw musiałem się zatrzymać i odinstalować)sn -i certificate.pfx VS_KEY_C***6
nazwa kontenera jest sugerowana w nieudanym wyniku zadania na GitLab (wyjście msbuild)
źródło