Nie można zaimportować pliku kluczowego ' bla.pfx '- błąd 'plik kluczowy może być chroniony hasłem'

Właśnie uaktualniliś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 aktualizacji ciągle otrzymujemy następujący błąd:

Nie można zaimportować następującego pliku klucza: companyname.pfx. Plik klucza może być chroniony hasłem. Aby to naprawić, spróbuj ponownie zaimportować certyfikat lub ręcznie zainstalować certyfikat do silnej nazwy CSP za pomocą następującego klucza nazwa kontenera: VS_KEY_3E185446540E7F7A

Dzieje się tak na niektórych maszynach programistycznych, a nie na innych. Niektóre metody użyte do naprawienia tego, które działały przez pewien czas, to:

    Po zainstalowaniu pliku klucza z Eksploratora Windows (kliknij prawym przyciskiem myszy na pliku PFX i kliknij Zainstaluj)
  • instalacja programu Visual Studio 2010 po raz pierwszy na świeżym komputerze wyświetla monit o podanie hasła przy pierwszym otwarciu projektu, a następnie działa. Na maszynach zmodernizowanych z Visual Studio 2008, nie dostajesz tej opcji.

Próbowałem użyć SN.EXE Narzędzie (Strong Name Tool), aby zarejestrować klucz o silnej nazwie CSP, jak sugeruje komunikat o błędzie, ale za każdym razem, gdy uruchamiam narzędzie z dowolnymi opcjami, używając wersji dostarczonej z Visual Studio 2010, SN.EXE po prostu wyświetla swoje argumenty wiersza poleceń zamiast robić cokolwiek. Dzieje się tak niezależnie od tego, jakie argumenty podaję.

Dlaczego tak się dzieje i jakie są jasne kroki, aby to naprawić? Mam zamiar zrezygnować z instalacji ClickOnce i podpisywania kodu przez Microsoft.

Author: Peter Mortensen, 2010-05-12

24 answers

Ja też miałem ten problem. Udało mi się rozwiązać problem, uruchamiając
sn -i <KeyFile> <ContainerName> (instaluje parę kluczy do nazwanego kontenera ).

sn jest zwykle instalowany jako część Windows SDK. Na przykład C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe. Najprawdopodobniej ta lokalizacja nie znajduje się na ścieżce wyszukiwania dla standardowego środowiska. Jednak" Wiersz polecenia programisty " zainstalowany przez Visual Studio dodaje dodatkowe informacje, które zwykle zawierają poprawną lokalizację.

Na podstawie Twojego postu to wygląda jak

sn -i companyname.pfx VS_KEY_3E185446540E7F7A

To musi być uruchomione z lokalizacji pliku PFX, jeśli masz rozwiązanie załadowane w VS 2010, możesz po prostu kliknąć prawym przyciskiem myszy plik pfx z Eksploratora rozwiązań i wybrać Otwórz wiersz polecenia, który uruchomi narzędzie. NET 2010 cmd prompt we właściwym katalogu.

Przed uruchomieniem tej komendy sn zainstalowałem ponownie pfx klikając na nią prawym przyciskiem myszy i wybierając install jednak to nie zadziałało. Tylko coś do odnotowania jako może to być kombinacja obu tych rozwiązań.

Mam nadzieję, że to pomoże rozwiązać twój problem.
 457
Author: Brandon Manchester,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-01 10:33:19

Odkryłem poprawkę, która pomaga w pomyślnym budowaniu w środowisku wielu programistów:

Zamiast zmieniać hasło (co powoduje, żepfx do zmiany), reselect the .plik pfx z comboboxu. Spowoduje to wywołanie okna dialogowego hasło. Po wprowadzeniu hasła projekt zbuduje OK. Każdy dev może to zrobić na swojej lokalnej maszynie bez faktycznej modyfikacji .plik pfx.

Nadal mam problemy z podpisaniem na naszym zbuduj maszynę serwerową. Dostaję tam ten sam błąd, jednak za pomocą sn.metoda exe-i nie rozwiązuje problemu dla buildserver.

 130
Author: MagicBox,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-07-07 15:01:16

Miałem ten sam problem i kasowanie sklepu i czytanie nie działało. Musiałem zrobić co następuje.

  • Pobierz kopię OpenSSL . Jest to dostępne dla Windows . Lub użyć Linuksa, ponieważ wszyscy prawie wszyscy go mają.

  • Uruchom następujące polecenie, aby wyeksportować do pliku klucza:

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

Następnie we właściwościach projektu można użyć pliku PFX.

 44
Author: Beached,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-30 18:46:28

Powiedziałem za wcześnie! Przebudowa przywróciła błędy do gry...

Znalazłem to działa - kliknij prawym przyciskiem myszy w Solution Explorer i wyklucz go z projektu. Kliknij Pokaż wszystkie pliki , Kliknij prawym przyciskiem myszy i ponownie dołącz je do projektu. Teraz Cofnij oczekujące zmiany...

Z jakiegoś powodu to uporządkowane dla mnie i było stosunkowo bezbolesne!

 37
Author: Mike F,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-14 18:34:55

Stwierdziłem, że w niektórych przypadkach powinieneś spróbować usunąć Ten klucz zanim go zainstalujesz. Więc wykonaj następujące czynności:

  1. sn -d VS_XXXX
  2. sn -i mykey.pfx VS_XXX
 36
Author: Dariusz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-23 20:41:40

VSCommands 2010 (plugin dla Visual Studio) może to naprawić automatycznie - wystarczy kliknąć prawym przyciskiem myszy na błąd i kliknąć Zastosuj poprawkę z menu. Możesz pobrać go z galerii Visual Studio.

 31
Author: Jarek Kardas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-30 18:35:03

Po wypróbowaniu tych wszystkich rozwiązań (i wielu innych) odkryłem, że problem leży gdzie indziej. Dla osób, które przechodzą przez to samo nieszczęście co ja po zakupie certyfikatu, podzielę się rozwiązaniem mojego problemu.

Zachowanie

Rozumiem, że 'sign' stosuje silną nazwę, a nie authenticode do DLL lub EXE. To dlatego signtool będzie działać w tym przypadku, ale 'sign' w Visual studio nie będzie działać.

Reason

W w przeszłości miałem doświadczenie z certyfikatami od Verisign. Mają KeySpec=2 w certyfikacie-który jest używany z funkcją "znak" w Visual Studio. Certyfikaty te działają dobrze zarówno dla Visual Studio, jak i signtool.

Kupiłem teraz certyfikaty od Comodo, które mają niepoprawne KeySpec=1 w certyfikatach podpisywania kodu. Oznacza to, że te certyfikaty działają dobrze z signtool (authenticode), ale nie z silnym nazewnictwem (lista rozwijana znak).

Rozwiązanie

Istnieją dwa sposoby rozwiązania tego problemu:

  1. Utwórz osobny certyfikat dla swojej silnej nazwy za pomocą sn -k [name].snk. Podpisz zespół za pomocą snk, a następnie użyj signtool z certyfikatem podpisywania kodu, aby podpisać DLL / EXE za pomocą podpisu authenticode. Choć wydaje się to dziwne, z tego co rozumiem jest to poprawny sposób radzenia sobie z certyfikatami, ponieważ nazwy strong mają inny cel niż authenticode (Zobacz też ten link aby uzyskać szczegółowe informacje na temat tego, jak to działa).
  2. Importuj certyfikat jako KeySpec=2. Procedura jest szczegółowo tutaj .

Ponieważ chcę użyć wielu silnych nazw, obecnie używam opcji (1), chociaż opcja (2) również działa.


Aby To rozwiązanie nigdy się nie zgubi w przyszłości, oto procedura rozwiązania 2:

  1. za pomocą "certyfikatów" MMC eksportuje istniejący zestaw kluczy (KeySpec=1) do pliku PFX. Uwaga: Proszę Utwórz kopię zapasową tego pliku w bezpiecznej lokalizacji i sprawdź, czy plik można zaimportować ok na innym komputerze, jeśli naprawdę chcesz grać bezpiecznie!
  2. Usuń istniejący certyfikat ze sklepu crypto (stlll przy użyciu MMC).
  3. Otwórz znak zachęty CMD.
  4. Importuj plik PFX używając tego polecenia:
    1. certutil -importPFX -user <pfxfilename> AT_SIGNATURE
    2. wprowadź hasło pfx po wyświetleniu monitu.

Teraz powinieneś mieć zestaw kluczy / certyfikat z KeySpec=2. W razie potrzeby możesz teraz eksportować to do innego pliku PFX przy użyciu MMC ponownie.

 27
Author: atlaste,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-26 21:37:12

Aby rozwiązać ten problem w Visual Studio 2012, klikam prawym przyciskiem myszy projekt, właściwości - > "podpisywanie", a następnie odznaczam "podpisz manifesty kliknięć".

 12
Author: Romeo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-14 18:56:04

Ponownie wybrałem plik klucza (pfx) w rozwijanym polu "Wybierz plik klucza o silnej nazwie", a następnie podałem hasło w wyskakującym oknie "Wprowadź hasło". Uratowałem mój projekt i go odbudowałem.Budowa się powiodła.

  • Otwórz Właściwości Projektu.
  • Kliknij sekcję podpisywania.
  • Gdzie jest napisane " Choose a strong name key file:", ponownie zaznacz bieżącą wartość z rozwijanego pola:

Tutaj wpisz opis obrazka

  • Visual Studio wyświetli teraz monit o hasło. Wejdź.

Tutaj wpisz opis obrazka

  • Zapisz swój projekt i zrobić przebudowę.

  • Jeśli otrzymasz komunikat o błędzie: "podjęto próbę odniesienia się do tokenu, który nie istnieje", po prostu zignoruj go i kontynuuj poniższe kroki

  • Kliknij przycisk "Zmień hasło":

Tutaj wpisz opis obrazka

  • Wprowadź oryginalne hasło we wszystkich trzech polach i kliknij OK. Jeśli chcesz zmienić hasło (lub jeśli twoje stare hasło nie spełnia wymagań złożoności), możesz to zrobić teraz.

  • Zapisz swój projekt i zrobić przebudowę.

Więcej Informacji..

 10
Author: Bala Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-29 07:10:35

Jako obejście, próbowałem uruchomić Visual Studio 2010 jako administrator i zadziałało dla mnie.

Mam nadzieję, że to pomoże.

 6
Author: user350076,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-14 12:26:44

Jako autor oryginalnego raportu o błędzie connect, istnieją dwa warianty tej wiadomości (odkryłem później)

Dla jednego wariantu używasz sn.exe (zwykle jeśli robisz silne nazewnictwo), aby zaimportować klucz do silnego sklepu nazewnictwa.

Innym wariantem, dla którego używasz certmgr do importowania, jest kodowanie dla takich rzeczy jak wdrożenie click-once (zauważ, że możesz użyć tego samego cert dla obu celów).

Mam nadzieję, że to pomoże.

 4
Author: PeterI,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-20 21:52:41

Nic mi nie działało, ale potem poszedłem i zajrzałem do Menedżera certyfikatów (mmc.exe). Certyfikat nie został zaimportowany w sklepie osobistym, więc zaimportowałem go ręcznie, a następnie skompilowałem projekt.

Zobacz ClickOnce podpisywanie manifestów i podpisywanie zespołów Strong-Name przy użyciu strony podpisywania projektów Visual Studio, podpisywanie zespołów.

 3
Author: Samuel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-14 18:52:38

Ponowne wybranie pliku klucza w comboboxie i wpisanie hasła pomaga nam w tym.

Ale trzeba to zrobić za każdym razem, gdy zmieni się plik klucza i wydaje się, że nie jest w porządku.

 2
Author: user1113289,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-23 11:08:58

Miałem ten sam problem po przeniesieniu instalacji Windows na SSD . Żadne inne rozwiązanie nie zadziałało.

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 programie Visual Studio. Przejdź do projektu - > właściwości - >podpisywanie. Nie powinieneś widzieć żadnych kluczy wymienionych w polu combo "wybierz plik klucza o silnej nazwie". W polu combo przejdź do klucza, wybierz go, a twój projekt może teraz zbuduj.

 2
Author: GoalMaker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-31 15:43:16

Mój problem polegał na tym, że kontroler TFS Build działał jako usługa sieciowa i z jakiegoś powodu nie rozumiałem, dlaczego certyfikaty usługi hosta Visual Studio Build nie są używane. Zmieniłem tożsamość usługi Visual Studio Build na coś bardziej zarządzalnego, upewniłem się, że ma 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.

 2
Author: Sentinel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-14 18:48:35

Miałem podobny problem, ale po wybraniu pfx w Comboboxie "Strong name key file" I wpisaniu hasła nadal mam podobny błąd (bez części nazwy kontenera):

Nie można zaimportować następującego pliku klucza: companyname.pfx. Plik klucza może być chroniony hasłem. Aby to naprawić, spróbuj ponownie zaimportować certyfikat lub ręcznie zainstalować certyfikat

Również panel informacyjny certyfikatu "podpisz manifesty klikalności" nie został wypełniony.

Zrobiłem " Select from File..."na moim pfx i to rozwiązało problem.

 2
Author: surfen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-01 12:04:31

To rozwiązało mój problem: Otwórz swój projekt VS

Kliknij dwukrotnie na pakiet.appxmanifest

Przejdź do zakładki opakowania

Kliknij Wybierz certyfikat

Kliknij configure certificate

Wybierz z pliku i użyj przykładu.pfx że jedność lub cokolwiek innego stworzone

 2
Author: Milad Xandi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-29 01:15:02

Wszystkie opisane tu metody mi nie pomogły. Ale kiedy usunąłem *.plik pfx z mojego projektu i dodał go do podpisu zespołu ponownie, zbudowałem swój projekt bez żadnego błędu! Nie potrafię wyjaśnić dlaczego. Ale u mnie zadziałało.

 1
Author: Peter Barbanyaga,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-31 15:44:35

Okay, to zadziałało na 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 w nowym rozwiązaniu/projekcie Visual Studio 2010 i przejdź do właściwości projektu i odznacz go.

Gdy oba projekty są otwarte, skopiuj wklej do nowego. Przejdź do właściwości projektu i wybierz Build. Otworzyłem i zamknąłem Visual Studio, a także po usunięciu z nowego projektu zbudowałem go przed skopiowanie go ze starego projektu i wybranie go. Otrzymałem błąd na początku tego postu, kiedy skopiowałem projekt i próbowałem go zbudować.

 1
Author: Jason Robertson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-14 12:30:15

W moim scenariuszu usługa budowania nie używała tego samego konta użytkownika, z którego zaimportowałem klucz za pomocą sn.exe.

Po zmianie konta na moje konto administratora, wszystko działa dobrze.

 1
Author: Mathias Lykkegaard Lorenzen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-03 17:25:08

Niestety, żaden z wymienionych tu podejść nie zadziałał dla mnie. Muszę zarejestrować kilka PFX w kontenerze docker i muszę przekazać hasło za pomocą wiersza poleceń.

Więc ponownie opracowałem sn.exe -i <infile> <container> polecenie w C # za pomocą RSACryptoServiceProvider. Źródło i aplikacja znajdują się na Githubie w projekt sninstallpfx.

Aplikacjasninstallpfx akceptuje klucz PFX i jego hasło. Automatycznie oblicza nazwę kontenera klucza (VS_KEY_*) (zapożyczoną z Kod źródłowy MSBuild) i instaluje go pod mocną nazwą CSP.

Użycie:

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>
 1
Author: Honzajscz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-11-27 16:46:52

Sam rozwiązałem ten problem, zmieniając poniższą linię w projekcie Visual Studio .plik csproj:

To spowodowało błąd "nie można zaimportować":

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

Zmiana wartości na false sprawiła, że błąd zniknął.

 0
Author: Kyle Julé,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-19 15:05:23

Mam ten sam błąd. W moim przypadku próbowałem wszystkich powyższych, ale nie mogłem uzyskać wyniku.

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 wprowadzone nieprawidłowo. Błąd zniknął, gdy dynamicznie poprawnie wpisałem hasło. successful

 0
Author: Hamit YILDIRIM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-07-15 12:10:32

Dla kogo używa GitLab runners:

  • pamiętaj, aby uruchomić biegacza z kontem, na które możesz się zalogować: ./gitlab-runner.exe install --user ".\ENTER-YOUR-USERNAME" --password "ENTER-YOUR-PASSWORD" (najpierw musiałem się zatrzymać i odinstalować)
  • postępuj zgodnie z Ten przewodnik aby przyznać build użytkownikowi uprawnienia do logowania się jako usługa
  • Zaloguj się z takim build user
  • użyj polecenia sugerowanego w innych odpowiedziach: sn -i certificate.pfx VS_KEY_C***6

Nazwa kontenera jest sugerowana w wyniku nieudanego zadania na GitLab (msbuild wyjście) Tutaj wpisz opis obrazka

 0
Author: Michele mpp Marostica,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-12-12 17:52:04