visual-studio-2010 - c# temporarykey pfx




키 파일 'blah.pfx'가져올 수 없습니다-오류 '키 파일을 암호로 보호 된 수 있습니다' (15)

우리는 Visual Studio 2008 프로젝트를 Visual Studio 2010으로 업그레이드했습니다. 모든 어셈블리는 Verisign 코드 서명 인증서를 사용하여 강력하게 서명되었습니다. 업그레이드 이후 지속적으로 다음과 같은 오류가 발생합니다.

다음 키 파일을 가져올 수 없습니다 : companyname.pfx. 키 파일은 암호로 보호되어있을 수 있습니다. 이 문제를 해결하려면 인증서를 다시 가져 오거나 인증서를 다음 키 컨테이너 이름을 사용하여 강력한 이름 CSP에 수동으로 설치해보십시오. VS_KEY_3E185446540E7F7A

이는 일부 개발자 컴퓨터에서만 발생하며 다른 개발자 컴퓨터에서는 발생하지 않습니다. 이 문제를 해결하는 데 사용 된 몇 가지 방법은 다음과 같습니다.

  • Windows 탐색기에서 키 파일을 다시 설치 (PFX 파일을 마우스 오른쪽 단추로 클릭하고 설치 클릭)
  • 처음으로 새로운 컴퓨터에 Visual Studio 2010을 설치하면 프로젝트를 처음 열 때 암호를 입력하라는 메시지가 나타나고 암호가 작동합니다. Visual Studio 2008에서 업그레이드 한 시스템에서는이 옵션을 얻지 못합니다.

나는 강력한 이름 CSP로 키를 등록하기 위해 SN.EXE 유틸리티 (Strong Name Tool)를 사용하려고 시도했다. 그러나 Visual Studio 2010과 함께 제공된 버전을 사용하는 모든 옵션을 사용하여 도구를 실행할 때마다 SN .EXE는 명령 행 인수를 나열하는 대신 아무것도 수행하지 않습니다. 이것은 내가 제공하는 인수에 상관없이 발생합니다.

왜 이런 일이 일어나고 있으며이를 해결하기위한 명확한 단계는 무엇입니까? ClickOnce 설치 및 Microsoft 코드 서명을 포기하려고합니다.


VSCommands 2010 (Visual Studio 용 플러그인)은 자동으로이 문제를 해결할 수 있습니다. 오류를 마우스 오른쪽 버튼으로 클릭하고 메뉴에서 수정 적용을 클릭하면됩니다. Visual Studio 갤러리에서 가져올 수 있습니다.


Visual Studio 2012에서이 문제를 해결하려면 프로젝트, 속성 -> "서명"을 마우스 오른쪽 단추로 클릭 한 다음 "ClickOnce 매니페스트에 서명"을 선택 취소하십시오.


Windows 설치를 SSD 옮긴 후에도 동일한 문제가 발생했습니다. 다른 해결책들 중 어느 것도 나를 위해 일하지 않았다.

내 솔루션은 Notepad 에서 프로젝트 파일을 열고 PFX 키에 대한 모든 참조를 제거하는 것이 었습니다. 파일이 저장되면 Visual Studio에서 솔루션을 엽니 다. 프로젝트 -> 등록 정보 -> 서명으로 이동하십시오. '강력한 이름 키 파일 선택'콤보 상자에 나열된 키가 없어야합니다. 콤보 상자에서 키로 이동하여 키를 선택하면 이제 프로젝트를 빌드 할 수 있습니다.


나는 너무 빨리 말했다! 다시 빌드하여 오류를 다시 게임으로 가져 왔습니다 ...

이 기능이 작동 함을 발견했습니다. 솔루션 탐색기 에서 마우스 오른쪽 버튼을 클릭하고 프로젝트에서 제외시킵니다. 모든 파일 표시를 클릭하고 마우스 오른쪽 단추를 클릭 한 다음 프로젝트에 다시 포함 시키십시오. 대기중인 변경 사항을 취소합니다 ...

웬일인지 이것은 나를 위해 그것을 소트했고, 비교적 어려웠다!



내 문제는 TFS 빌드 컨트롤러가 네트워크 서비스로 실행 중이었기 때문에 Visual Studio Build Host 서비스 인증서가 사용되지 않는 이유를 이해할 수 없었습니다. Visual Studio Build 서비스의 ID를 관리하기 쉬운 것으로 변경하고 TFS 서버에 권한이 있는지 확인한 다음 MMC를 사용하여 인증서를 수동으로 추가했습니다.

문제는 MSBuild가 암호로 보호 된 인증서를 저장소에 추가 할 수 없다는 것입니다.


멀티 개발자 환경에서 성공적으로 빌드 할 수 있도록 도와주는 수정 사항을 발견했습니다.

암호 (.pfx가 변경됨)를 변경하는 대신 콤보 상자에서 .pfx 파일을 다시 선택 하십시오. 그런 다음 암호 대화 상자를 호출합니다. 암호를 입력하면 프로젝트가 정상적으로 작성됩니다. 모든 개발자는 실제로 .pfx 파일을 수정하지 않고 자신의 로컬 컴퓨터에서이 작업을 수행 할 수 있습니다.

여전히 서버 빌드 머신에서 어셈블리에 서명하는 데 문제가 있습니다. 거기에 같은 오류가 발생하지만 sn.exe -i 메서드를 사용하여 buildserver 문제가 해결되지 않습니다.


비슷한 문제가 있었지만 "강력한 이름 키 파일"ComboBox에서 pfx를 선택하고 비밀번호를 입력 한 후에도 컨테이너 이름 부분이 아닌 비슷한 오류가 발생했습니다.

다음 키 파일을 가져올 수 없습니다 : companyname.pfx. 키 파일은 암호로 보호되어있을 수 있습니다. 이 문제를 해결하려면 인증서를 다시 가져 오거나 수동으로 인증서를 설치하십시오.

또한 "ClickOnce 매니페스트에 서명"인증서 정보 패널이 채워지지 않았습니다.

나는 "File Select ..."을 pfx에서했고, 문제를 해결했다.


여기에 설명 된 모든 방법은 도움이되지 않았습니다. 그러나 프로젝트에서 * .pfx 파일을 삭제하고 어셈블리의 서명에 다시 추가하면 오류없이 프로젝트를 빌드했습니다! 나는 이유를 설명 할 수 없다. 그러나 그것은 나를 위해 일했습니다.


연결 버그 보고서에 대한 근본적인 작성자 인이 메시지에는 두 가지 변종이 있습니다 (나중에 발견했습니다)

한 변형에 대해 강력한 이름 지정 저장소로 키를 가져 오기 위해 sn.exe (일반적으로 강력한 이름 지정을 수행하는 경우)를 사용합니다.

가져 오기 위해 certmgr을 사용하는 다른 변형은 클릭 한번 배포와 같은 것을 코딩 할 때입니다 (두 인증서 모두 동일한 인증서를 사용할 수 있습니다).

희망이 도움이됩니다.


이것은 내 문제를 해결 : 당신의 VS 프로젝트를 엽니 다

Package.appxmanifest를 두 번 클릭하십시오.

패키징 탭으로 이동하십시오.

인증서 선택을 클릭하십시오.

인증서 구성을 클릭하십시오.

파일에서 선택하고 unity 또는 다른 어떤 것이 만든 example.pfx를 사용하십시오.


이러한 모든 솔루션을 시도한 후에 (그리고 훨씬 더) 문제가 다른 곳에서 발견되었습니다. 인증서를 구입 한 후 나와 같은 불행을 겪는 사람들을 위해 제 문제에 대한 해결책을 나눌 것입니다.

행동

나는 'sign'이 DLL 또는 EXE에 authenticode가 아닌 강력한 이름을 적용한다는 것을 이해합니다. 이것이 signtool이이 경우 작동하는 이유 입니다 .하지만 Visual Studio에서 'sign'이 작동하지 않습니다.

이유

과거에는 Verisign의 인증서에 대한 경험이있었습니다. 인증서에 KeySpec=2 가 있습니다.이 키는 Visual Studio의 'sign'기능과 함께 사용됩니다. 이 인증서는 Visual Studio와 signtool 모두에 적합합니다.

Comodo에서 인증서를 구입했습니다.이 인증서는 코드 서명 인증서에 잘못된 KeySpec=1 이 있습니다. 즉,이 인증서는 signtool (authenticode)에서는 제대로 작동하지만 강력한 이름 지정 (서명 드롭 다운)에서는 작동하지 않습니다.

해결책

이 문제를 해결할 수있는 두 가지 방법이 있습니다.

  1. sn -k [name].snk 사용하여 강력한 이름에 대해 별도의 인증서를 만듭니다. snk를 사용하여 어셈블리에 서명 한 다음 코드 서명 인증서로 signtool을 사용하여 authenticode 서명으로 DLL / EXE에 서명하십시오. 이것이 이상하게 보일지라도, 이것은 강한 이름이 authenticode와 다른 목적을 가지고 있기 때문에 인증서를 다루는 올바른 방법이라는 것을 이해합니다. ( 이 링크 는 어떻게 작동하는지에 대한 자세한 내용은 이 링크 를 참조하십시오).
  2. KeySpec=2 로 인증서를 가져 오십시오. 이 절차는 여기에서 자세히 설명합니다 .

여러 강력한 이름을 사용하고 싶기 때문에 현재 옵션 (1)을 사용하고 있지만 옵션 (2)도 사용할 수 있습니다.

이 솔루션을 앞으로도 잃어 버리지 않도록하려면 솔루션 2의 절차를 따르십시오.

  1. "Certifiates"MMC를 사용하여 기존 키 집합 ( KeySpec=1 )을 PFX 파일로 내 보냅니다. 참고 :이 파일을 안전한 위치에 백업하고 실제로 안전하게 재생하려면 파일을 다른 컴퓨터에서 가져올 수 있는지 테스트하십시오!
  2. 암호화 저장소 (MMC를 사용하는 stlll)에서 기존 인증서를 삭제합니다.
  3. CMD 프롬프트를 엽니 다.
  4. 다음 명령을 사용하여 PFX 파일을 가져옵니다.
    1. certutil -importPFX -user <pfxfilename> AT_SIGNATURE
    2. 프롬프트가 표시되면 pfx에 대한 암호를 입력하십시오.

이제 KeySpec=2 키 집합 / 인증서가 있어야합니다. 필요한 경우 MMC를 사용하여 다른 PFX 파일로 다시 내보낼 수 있습니다.


참고로

SNK 파일을 생성 한 공식 코드 서명 PFX 파일 (코드 서명으로 구매)과 SNK 파일을 탐색 한 Visual Studio 2013 에서 sn.exe를 -p 플래그와 함께 사용했습니다.

  • 어떤 암호 문제가 해결되었습니다.

그러나 여전히 문제는 "키 파일 * .. SNK에 공개 / 개인 키 쌍이 포함되어 있지 않습니다."라고 계속해서 말합니다.


콤보 상자에서 키 파일을 재 선택하고 암호를 입력하면 우리에게 도움이됩니다.

그러나 키 파일이 변경 될 때마다 수행해야하며 OK가 아닌 것으로 보입니다.


나는이 문제도 겪고 있었다. 실행하여 문제를 해결할 수있었습니다.
sn -i <KeyFile> <ContainerName> ( 명명 된 컨테이너에 키 쌍을 설치합니다 ).

sn 은 일반적으로 Windows SDK의 일부로 설치됩니다. 예 : C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exe . 이 위치는 표준 환경의 검색 경로에 없을 가능성이 큽니다. 그러나 Visual Studio에서 설치 한 "개발자 명령 프롬프트"에는 일반적으로 올바른 위치가 포함 된 추가 정보가 추가됩니다.

다음과 같이 보이는 내 소식을 기반으로합니다.

sn -i companyname.pfx VS_KEY_3E185446540E7F7A

이 작업은 PFX 파일의 위치에서 실행해야합니다. VS 2010에서로드 된 솔루션이있는 경우 솔루션 탐색기에서 pfx 파일을 마우스 오른쪽 단추로 클릭하고 명령 프롬프트 열기를 선택하면 .net 2010 cmd 프롬프트 도구가 시작됩니다. 올바른 디렉토리.

이 sn 명령을 실행하기 전에 pfx를 마우스 오른쪽 단추로 클릭하고 설치를 선택하여 다시 설치했지만 작동하지 않았습니다. 해결책을 제시 한 두 가지 요소의 조합이 될 수 있으므로 주목할 부분입니다.

희망이 당신의 문제를 해결하는 데 도움이됩니다.





pfx