'blah.pfx'키 파일을 가져올 수 없습니다- '키 파일이 비밀번호로 보호되어있을 수 있습니다'오류


392

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

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

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

  • Windows 탐색기에서 키 파일을 다시 설치하십시오 (PFX 파일을 마우스 오른쪽 단추로 클릭하고 설치를 클릭하십시오).
  • 새 컴퓨터에 Visual Studio 2010을 처음 설치하면 프로젝트를 처음 열 때 암호를 묻는 메시지가 표시되고 작동합니다. Visual Studio 2008에서 업그레이드 한 컴퓨터에서는이 옵션을 사용할 수 없습니다.

오류 메시지에서 알 수 있듯이 SN.EXE 유틸리티 (강한 이름 도구)를 사용하여 강력한 이름 CSP에 키를 등록 하려고 시도 했지만 Visual Studio 2010, SN과 함께 제공된 버전을 사용하여 옵션을 사용하여 도구를 실행할 때마다 .EXE는 작업 대신 명령 행 인수를 나열합니다. 이것은 내가 제공하는 인수에 관계없이 발생합니다.

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

답변:


447

나는 또한이 문제에 부딪쳤다. 실행하여 문제를 해결할 수있었습니다
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를 다시 설치했지만 작동하지 않았습니다. 솔루션을 제공 한 두 가지의 조합 일 수 있으므로주의해야 할 점입니다.

이것이 문제를 해결하는 데 도움이되기를 바랍니다.


5
감사합니다 Brandon-예. 키 파일 "정렬"을 수동으로 다시 설치하는 것처럼 문제가 해결됩니다. 문제는 키 파일을 체크인하자마자이 체크인 된 키 파일에 대한 최신 사용자가이 버그를 경험하게된다는 것입니다. 해당 사용자 중 누구라도 "수정"을 확인하고 최신 정보를 받으면 내 컴퓨터가 다시 고장납니다. Microsoft는 이에 대한 문제 티켓을 시작하여 VS2010 팀 및 VSS 팀에 할당했습니다.
JasonD

2
흥미 롭군 새 CSP에 pfx를 추가 할 때이 문제가 발생하지 않았습니다. 내 지식으로는 SN -i는 pfx 파일을 변경하지 않으므로 나중에 아무것도 확인할 필요가 없습니다. 그러나 비밀번호 재설정과 같이 pfx 파일을 변경하는 경우 pfx 파일이 변경되므로 문제가 발생할 수 있습니다. 솔루션이 다른 시스템의 해당 pfx 파일로 빌드됩니까? 그렇다면 pfx 파일이 올바른 것입니다. 빌드 문제가있는 컴퓨터에서 올바른 CSP로 설정되지 않았습니다.
Brandon Manchester

3
처음에는 sn -i 부분 만 시도했지만 암호가 잘못되었다고 불평했습니다 (정확하지만). 인증서를 제거했다가 다시 설치 한 다음 sn -i ...가 작동했습니다. 기본적으로 두 단계가 모두 필요하다는 것을 확인했습니다. cert를 다시 설치 한 다음 sn 명령을 실행하십시오.
Dodgyrabbit

1
VSS와 TFS에서 sn -i 명령을 실행하면 PFX 파일을 체크 아웃하지 않으면 작동하지 않으며 체크인 할 때 네트워크의 다른 개발자에게는 작동하지 않는다는 것을 알았습니다. 인증서를 다시 설치 한 다음 sn -i 명령을 실행해야합니다. 사무실의 모든 개발자 컴퓨터에서 작동하려면 필요합니다.
JasonD

5
이것은 나에게도 효과가 있었지만 과거에는 이것을 할 필요가 없었습니다. VS는 팝업하여 각 키의 비밀번호를 요청하는 데 사용됩니다. 무엇이 바뀌 었습니까?
Kevin Berridge

126

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

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

빌드 서버 시스템에서 어셈블리에 서명하는 데 여전히 문제가 있습니다. 동일한 오류가 발생하지만 sn.exe -i 방법을 사용해도 빌드 서버의 문제가 해결되지 않습니다.


5
TFS 빌드 서버 에서이 작업을 수행하지 못하는 동안 잠시 동안 보냈으며 빌드 서비스 계정이 아닌 나 자신으로 로그온했다는 것을 알았습니다.
Daniel Morritt 2012 년

7
현재 표시된 답변이 다중 개발자 환경에서는 작동하지 않으므로 답변으로 표시해야합니다. 잘 했어.
Daniel McQuiston

동일한 .pfx 파일을 사용하여 하나의 솔루션 내에서 여러 어셈블리 / 프로젝트에 서명하는 경우 하나의 프로젝트에서만이 단계를 수행하면 모든 프로젝트에 적용됩니다. 잘 작동합니다.
Jon Comtois

1
내 문제는 빌드 서버가 로컬 계정으로 실행 중이 었다는 것입니다. 옵션에 들어가서 변경했지만 잘못된 위치에서 변경했다는 것을 알지 못했습니다. 다시 확인하고 실수를 깨달을 때까지 몇 시간 동안 문제를 해결했습니다!
머핀 남자

3
정말 고마워 2017 년에도 여전히 해결 방법입니다.
Billy Jake O'Connor

43

나는 같은 문제가 있었고 상점을 삭제하고 읽을 수 없었습니다. 나는 다음을해야했다.

  • OpenSSL 사본을 확보하십시오 . 그것은는 Windows 용 가능 . 또는 Linux 상자를 사용하면 거의 모두 사용할 수 있습니다.

  • 키 파일로 내보내려면 다음을 실행하십시오.

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

그런 다음 프로젝트 속성에서 PFX 파일을 사용할 수 있습니다.


1
감사합니다!! 나는 이것이 나를 위해 일했다고 생각한다. 여기에는 OpenSSL을 잡고 : gnuwin32.sourceforge.net/packages/openssl.htm
aherrick을

pfx에 실제 인증서를 포함하는 옵션을 추가하고 싶습니다. openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt -keysig -keyex
Pete

openssl을 관리자로 실행하십시오. 그렇지 않으면 " '무작위 상태'를 쓸 수 없습니다"라는 오류가 표시됩니다. 또한 openssl을 수행 한 후에도 여전히 "sn -i ..."로 Brandon Manchester의 답변을 수행해야했습니다. 의회.
리 리처드슨


이것이 마침내 나를 해결 한 유일한 솔루션입니다. 감사!
Ladislav

37

너무 빨리 말 했어요! 다시 빌드하면 오류가 다시 발생했습니다 ...

솔루션 탐색기 에서 마우스 오른쪽 버튼을 클릭 하고 프로젝트에서 제외하십시오. 클릭 모든 파일보기 , 마우스 오른쪽 버튼으로 클릭하고 지금 다시 프로젝트에 포함되어 있습니다. 보류중인 변경 사항을 취소합니다 ...

어떤 이유로 이것은 나를 위해 그것을 분류하고 상대적으로 고통이 없었습니다!


돌아 왔어, 도와주지 않았다. 그것이 프로젝트 설정에서 pfx를 제거한다는 것을 몰랐습니다. 나는 그 대답이 Stefan stackoverflow.com/a/14644793/1735721
DennisWelu

이 답변은 훌륭합니다. 그것은 나를 위해 일했고 너무 쉽습니다.
벤 루빈

나를 위해 일했습니다 (VS2017 15.7.4). 훌륭하고 빠른 해결책에 감사드립니다.
미팅 참석자

VS2019 16.1.3에서 나를 위해 일했습니다. 감사!!
JordanTDN

35

경우에 따라 설치 하기 전에이 키 를 삭제 해야합니다. 다음을 수행하십시오.

  1. sn -d VS_XXXX
  2. sn -i mykey.pfx VS_XXX

1
이것은 나를 위해 그것을 고쳤다! 오브젝트 자체로 설치 자체가 실패했습니다.
Andy

나는 그것을 시도했지만 도움이되지 않았다. 인증서 자체에 문제가있을 수 있습니까?
Tomáš

2
관리자 로 제거 해야합니다. 일반 사용자로 실행하면 "강력한 이름 키 컨테이너를 찾을 수 없습니다"라는 잘못된 오류가 발생합니다.
astrowalker

고마워요.
Rikin Patel

31

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


1
나는 이것이 프로 버전을위한 것이라고 믿는다-내 라이트 버전에는이 옵션이 없다
Adam Butler

2
방금 다운로드 한 (2011 년 9 월) 버전에이 옵션이 제공되었습니다.
Jim Counts

4
여전히 프로 라이센스가 필요합니다.
John Baughman

27

이 모든 솔루션 (및 훨씬 더)을 시도한 후에 문제가 다른 곳에 있다는 것을 알았습니다. 인증서를 구입 한 후 저와 같은 불행을 겪는 사람들을 위해, 저는 문제에 대한 해결책을 공유 할 것입니다.

행동

'sign'은 DLL 또는 EXE에 인증 이름이 아닌 강력한 이름을 적용한다는 것을 이해합니다. 이것이 signtool 경우 작동하지만 Visual Studio의 'sign'은 작동하지 않습니다.

이유

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

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

해결책

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

  1. 을 사용하여 강력한 이름에 대한 별도의 인증서를 만듭니다 sn -k [name].snk. snk를 사용하여 어셈블리에 서명 한 후 코드 서명 인증서와 함께 signtool을 사용하여 인증 서명으로 DLL / EXE에 서명하십시오. 이것이 이상한 것처럼 보이지만, 내가 이해하는 것으로부터 이것은 강력한 이름이 authenticode와 다른 목적을 갖기 때문에 인증서를 처리하는 올바른 방법입니다 ( 이 링크 참조 방법에 대한 자세한 를 참조하십시오).
  2. 인증서를로 가져옵니다 KeySpec=2. 이에 대한 절차는 여기자세히 설명되어 있습니다 .

여러 개의 강력한 이름을 사용하고 싶기 때문에 현재 옵션 (1)을 사용하지만 옵션 (2)도 작동합니다.


이 솔루션이 향후에 손실되지 않도록하기 위해 솔루션 2의 절차는 다음과 같습니다.

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

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


귀하의 # 2 솔루션은 (보조 명령 줄 도구 또는 프로세스를 사용하지 않고) 저에게 효과적이었습니다. 감사합니다.
브론 데이비스

1
네, 왜 여기 일부 솔루션이 그렇게 많은 투표를했는지 이해할 수 없습니다. 이것은 실제로 나를 위해 일한 유일한 것이므로 CS 인증서를 구입하는 대부분의 사람들이 동일한 문제를 가져야한다고 확신합니다. 오 잘 ...
atlaste

1
이것은 나를 위해 일한 유일한 솔루션입니다. 또한 .pfx 파일에는 어셈블리 서명을위한 인증서 체인 정보를 포함 할 수 없습니다.
Shih-Wen Su

자세한 지시에 감사드립니다. 모든 단계는 정확하게 설명되어 있습니다.
Dmitriy

1
첫 번째 솔루션은 여기서 이해하는 것이 중요합니다 . 값 비싼 비밀번호로 보호 된 인증서로 어셈블리에 강력한 서명을 할 필요없습니다 ! 일단 이것을 이해하고 snk 파일을 사용하면이 문제는 완전히 사라집니다. 여기여기에 경고 참고 사항을 참조 하십시오 .
Paul

11

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


2
서명이 필요없는 경우 완벽한 답변입니다. 프로젝트에 서명 할 필요가 없습니다.
Tom Anderson

8

"강력한 이름 키 파일 선택"드롭 다운 상자에서 키 (pfx) 파일을 다시 선택한 다음 "암호 입력"팝업 창에 암호를 입력했습니다. 내 프로젝트를 저장하고 rebuild.build가 성공했습니다.

  • 프로젝트 속성을 엽니 다.
  • 서명 섹션을 클릭하십시오.
  • '강력한 이름 키 파일 선택 :'이 표시되면 드롭 다운 상자에서 현재 값을 다시 선택하십시오.

여기에 이미지 설명을 입력하십시오

  • 이제 Visual Studio에서 암호를 묻는 메시지를 표시합니다. 입력하십시오.

여기에 이미지 설명을 입력하십시오

  • 프로젝트를 저장하고 다시 빌드하십시오.

  • "존재하지 않는 토큰을 참조하려고했습니다"라는 오류 메시지가 표시되면 무시하고 아래 단계를 계속하십시오.

  • '비밀번호 변경'버튼을 클릭하십시오 :

여기에 이미지 설명을 입력하십시오

  • 세 상자 모두에 원래 비밀번호를 입력하고 확인을 클릭하십시오. 비밀번호를 변경하려는 경우 (또는 기존 비밀번호가 복잡한 요구 사항을 충족하지 않는 경우) 지금 변경할 수 있습니다.

  • 프로젝트를 저장하고 다시 빌드하십시오.

더 많은 정보..


3
이 전체 오류는 해결하기가 완전히 무작위 인 것처럼 보이지만이 솔루션은 저에게 효과적이었습니다. 다른 사람이 이것을 페이지 아래쪽으로 가져 가면 모든 것을 시도하는 것이 좋습니다.
DeusExMachina25

6

이 문제를 해결하기 위해 Visual Studio 2010을 관리자 권한으로 실행 해 보았습니다.

이게 도움이 되길 바란다.


어떤 이유로 든 작동이 중지되었습니다. 이것이 실제로 문제를 해결했다고 믿을 수 없었습니다. 감사합니다!!!
Gerhard Powell

4

연결 버그 보고서에 대한 대안의 원저자로서이 메시지에는 두 가지 변형이 있습니다 (나중에 발견했습니다).

한 변형의 경우 sn.exe (일반적으로 강력한 이름 지정을 수행하는 경우)를 사용하여 키를 강력한 이름 지정 저장소로 가져옵니다.

certmgr을 사용하여 가져 오는 다른 변형은 한 번 클릭으로 배포하는 것과 같은 디자인을 공동 설계 할 때입니다 (두 용도 모두에 동일한 인증서를 사용할 수 있음).

도움이 되었기를 바랍니다.


예, Microsoft 지원으로도 시도해 보았습니다. 이것이 코드 서명 가져 오기를 수행하는 방법입니다. 문제는 실제로 체크인 프로세스 소스 안전 중에 인증서 비밀번호가 손실되는 것으로 보입니다. 그러나 이것은 실제 문제가 아닌 것 같습니다. Widnows 7 시스템 # 1에 인증서 세부 정보를 입력 한 다음 정확히 동일한 파일을 다른 시스템으로 이동하여 등록하면 등록이 작동하지만 빌드는 실패합니다. Microsoft는 여전히 우리를 위해 그것을 조사하고 있습니다. 지금은 릴리스 중에 코드 서명을 비활성화하고 수동으로 서명해야했습니다.
JasonD

3

아무것도 효과가 없었지만 인증서 관리자 (mmc.exe)를 살펴 보았습니다. 인증서는 개인 저장소로 가져 오지 않았으므로 수동으로 가져온 다음 프로젝트를 컴파일했습니다.

참조 어셈블리를 서명, 비주얼 스튜디오 프로젝트 디자이너의 서명 페이지를 사용하여 서명에서 ClickOnce 매니페스트 서명 및 강력한 이름 어셈블리 .


SN.exe -i 수정을 수행 한 후에도 문제가 해결되었습니다.
코딩 사무라이

2

콤보 박스에서 키 파일을 다시 선택하고 비밀번호를 입력하면 이에 도움이됩니다.

그러나 키 파일이 변경 될 때마다 수행해야하며 정상이 아닌 것 같습니다.


2

Windows 설치를 SSD로 옮긴 후에도 같은 문제가 발생했습니다 . 다른 솔루션 중 어느 것도 나를 위해 일하지 않았습니다.

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


2

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

또한 MSBuild가 암호로 보호 된 인증서를 저장소에 추가 할 수 없다는 문제도있었습니다.


어느 상점에 추가해야합니까 ??
felickz

나는 똑같은 일을했고 (이 사용자에게 인증서를 넣었습니다. 개인 / 신뢰할 수있는 루트 / 신뢰할 수있는 술집 .. 어떻게 고쳤는지 모르겠습니다) 충돌 한 작업 공간이있는 다음 TFS 오류로 이동할 수 있었으므로 수정했습니다. 새 빌드 에이전트를 제거하고 추가합니다.
felickz

2

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

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

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

내 pfx에서 "파일에서 선택 ..."을 수행하여 문제를 해결했습니다.


1

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


1

좋아, 이것은 나를 위해 일했다. Visual Studio 2010에서 이전 솔루션 / 프로젝트를 관리자로 열고 새 솔루션 또는 복사 된 솔루션 / 프로젝트를 엽니 다. 관리자는 새 Visual Studio 2010 솔루션 / 프로젝트에서 복사 한 pfk 파일을 제거하고 프로젝트 속성으로 이동하여 선택을 해제하십시오.

두 프로젝트를 모두 연 상태에서 붙여 넣기를 새 프로젝트에 복사하십시오. 프로젝트 속성으로 이동하여 빌드를 선택하십시오. Visual Studio를 열고 닫았으며 새 프로젝트에서 제거한 후 이전 프로젝트에서 복사하여 선택하기 전에 빌드했습니다. 이 게시물의 시작 부분에서 프로젝트를 복사하고 빌드하려고 할 때 오류가 발생했습니다.


1

내 시나리오에서 빌드 서비스는 키를 가져온 것과 동일한 사용자 계정을 사용하지 않았습니다. sn.exe .

계정을 관리자 계정으로 변경하면 모든 것이 제대로 작동합니다.


나는 같은 문제를 겪고 있었고, 귀하의 의견을 읽으면서 Windows 7에서 Windows 10으로 업그레이드했으며 현재 VS가 관리자로 실행되어야한다는 사실을 지적했습니다. 그래서 관리자로 VS 포인터 없음 problems..Thanks 실행
user1063108

1

이것은 내 문제를 해결했습니다 : VS 프로젝트를여십시오.

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

포장 탭으로 이동

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

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

파일에서 선택하고 unity 또는 기타 생성 된 example.pfx를 사용하십시오.


0

Visual Studio 프로젝트의 .csproj 파일에서 다음 줄을 변경하여이 문제를 직접 해결했습니다.

이것은 '가져올 수 없습니다'오류를 던졌습니다.

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

값을 false로 변경하면 오류가 사라졌습니다.


7
일반적으로 어셈블리는 용도에 맞게 서명되며 SignManifest를 제거하면 일부 환경에서 배포시 문제가 발생할 수 있습니다. 따라서 문제에 대한 해결책이 아닙니다
Georgy Smirnov

0

같은 오류가 발생했습니다. 제 경우에는 위의 모든 것을 시도했지만 결과를 얻을 수 없었습니다.

필자의 경우, 오류의 원인은 인증서 비밀번호가 입력되지 않았거나 잘못 입력되었다는 사실을 마침내 깨달았습니다. 비밀번호를 동적으로 올바르게 입력하면 오류가 사라졌습니다. 성공한


0

불행히도, 여기에 언급 된 접근법은 나를 위해 일하지 않았습니다. 도커 컨테이너에 커플 PFX를 등록해야하며 명령 줄을 통해 비밀번호를 전달해야합니다.

그래서 RSACryptoServiceProvider를sn.exe -i <infile> <container> 사용하여 C # 에서 명령을 다시 개발했습니다 . 소스와 앱은 SnInstallPfx 프로젝트의 GitHub에 있습니다 .

SnInstallPfx 응용 프로그램은 PFX 키와 암호를 사용할 수 있습니다. 키 컨테이너 이름 (VS_KEY_ *)을 자동으로 계산 (MSBuild 소스 코드에서 차용)하여 강력한 이름 CSP에 설치합니다.

용법:

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>

0

GitLab 러너를 사용하는 사람 :

  • 로그온 할 수있는 계정으로 러너 를 실행 해야합니다 . ./gitlab-runner.exe install --user ".\ENTER-YOUR-USERNAME" --password "ENTER-YOUR-PASSWORD"(먼저 중지하고 제거해야했습니다)
  • 서비스로 로그인 할 수있는 빌드 사용자 권한 을 부여 하려면 이 안내서 를 따르십시오.
  • 그러한 빌드 사용자로 로그온
  • 다른 답변에서 제안한 명령을 사용하십시오. sn -i certificate.pfx VS_KEY_C***6

컨테이너 이름은 GitLab의 실패한 작업 출력 (msbuild 출력)에서 제안됩니다. 여기에 이미지 설명을 입력하십시오

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.