Signtool 오류 : Windows 스토어 앱에서 지정된 모든 기준을 충족하는 인증서를 찾을 수 없습니까?


294

내가 가지고있는 pfx 파일로 Windows 8 appx 패키지에 서명하려고합니다. 나는 다음과 같은 명령을 사용하고 있습니다 :

signtool.exe sign /fd sha256 /f "key.pfx" "app.appx"

그리고 이것으로부터, 나는 얻는다 :

SignTool 오류 : 주어진 모든 기준에 맞는 인증서를 찾을 수 없습니다.

어떤 "기준"을 충족하지 않습니까? 이것은 테스트 용이므로 자체 서명 된 인증서입니다. 키를 가져온 다음 서명을 시도했지만 항상 같은 오류가 발생합니다. 이 문제를 어떻게 해결합니까?


나는이 생각하는 Signtool신뢰할 수있는 루트 인증서 저장소에 인증서를 찾기 위해 노력하고 거기에는 코드 서명 인증서가 없습니다.
crea7or

15
나는 서명에 사용 된 인증서가 만료했기 때문에 그것이이 오류했다
마크 호머

1
비슷한 문제가 있었고 여기 에 답변을 게시했습니다 . 도움이 되었기를 바랍니다.
SurenSaluka

답변:


590

Visual Studio를 통해이 오류가 발생하면 원래 개발 한 컴퓨터와 일치하도록 서명 인증서 설정이 있었기 때문입니다.

프로젝트 속성> 서명 탭으로 이동하여 인증서 세부 정보를 확인하여이를 확인할 수 있습니다.

"ClickOnce 매니페스트 서명"을 선택 취소하여 서명을 비활성화 할 수 있습니다.

서명 속성

이 옵션을 끄지 않으려면 인증서를 설치해야합니다.


12
@JDandChips가 제안한 것에 덧붙여서 : 디버깅 및 테스트 목적으로 위의 스크린 샷에 표시된 'Create Test Certificate'버튼을 클릭하여 임시 테스트 인증서를 사용할 수도 있습니다.
nam

"인증서 설치"란 무엇입니까?
Sean Kendle 2016 년

내 상황에서 인증서는 원래 개발 된 컴퓨터에서 사용할 수 있으므로 "파일에서 선택 ..."을 선택하여 누락 된 인증서를 설치할 수 있습니다. 또는 항상 새로운 것을 만들어 사용할 수 있습니다!
JDandChips

@JDandChips 새 인증서는 어떻게 만드나요?
erotavlas

3
VS 초보자 용. 완전히 다른 메뉴가 팝업되므로 솔루션이 아니라 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오!
B5A7

109

/ debug로 시도하십시오. 1에서와 같이 :

signtool sign /debug /f mypfxfile.pfx /p <password> (mydllexectuable).exe

무슨 일이 일어나고 있는지 알아내는 데 도움이 될 것입니다. 다음과 같이 출력되어야합니다.

The following certificates were considered:
    Issued to: <issuer>
    Issued by: <certificate authority> Class 2 Primary Intermediate Server CA
    Expires:   Sun Mar 01 14:18:23 2015
    SHA1 hash: DD0000000000000000000000000000000000D93E

    Issued to: <certificate authority> Certification Authority
    Issued by: <certificate authority> Certification Authority
    Expires:   Wed Sep 17 12:46:36 2036
    SHA1 hash: 3E0000000000000000000000000000000000000F

After EKU filter, 2 certs were left.
After expiry filter, 2 certs were left.
After Private Key filter, 0 certs were left.
SignTool Error: No certificates were found that met all the given criteria.

인증서가 작동하지 않거나 인증서가 고려되지 않은 필터를 확인할 수 있습니다.

해시와 다른 정보를 변경했지만 아이디어를 얻어야합니다. 도움이 되었기를 바랍니다.


1 하시기 바랍니다 참고 : signtool위치에 대한 고집 /debug옵션이 배치됩니다. 그것은 이후에 갈 필요 sign문.
2 참고 :이 /debug옵션은 일부 버전에서만 작동합니다 signtool. WDK 버전에는 옵션이 있지만 Windows SDK 버전에는 옵션이 없습니다.


3
나를 위해 작동합니다. signtool의 응답을 이해하지는 못하지만 / debug 가해 야 할 일을했습니다. 공감!
noelicus

1
이 명령은 / debug를 넣은 위치에 따라 다릅니다. 순서를 바꾸면 오류가보고됩니다.
다니엘

12
/ debug는 특정 버전의 signtool.exe에서만 작동합니다. WDK와 함께 제공되는 옵션은이 옵션을 제공하지만 Windows SDK의 옵션은 제공하지 않습니다.
Paul Kertscher 2019

3
또한 / debug는 사이에 있지 않고 signtool 표시 뒤에 와야합니다.
Denis V

인증서가 만료되었음을 나타냅니다. 잘 했어.
avantprime

36

대부분의 인증서에는 만료 날짜가 있으므로 항상 인증서 만료 날짜를 먼저 확인하십시오. 제 경우에는 인증서가 만료되어 프로젝트를 빌드하려고했습니다.


2
인증서 만료를 확인하려면 명령 행으로 이동하여 인증서가있는 위치로 이동 한 후을 입력하십시오 certutil -dump mycertificate.pfx. 첫 번째 항목은 코드 서명 인증서가 아닌 CA이므로 마지막 항목을보십시오.
HockeyJ

23

앱에 서명 할 필요가 없으면 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오.

Project Properties -> Signing -> uncheck "Sign the ClickOnce Manifest"

또한 MS 기사가 제안하는 것처럼

Visual Studio 2008을 사용 중이고 .NET 3.5를 대상으로하고 자동 업데이트를 사용하는 경우 인증서를 변경하고 새 버전을 배포하면됩니다.


1
테스트 인증서 작성을 클릭하여 계속 수행 할 수도 있습니다. 감사
MindRoasterMir

16

프로젝트 속성의 서명 탭에서 '한 번 클릭하여 서명하십시오'를 선택 해제하면 오류가 제거되고 거기에서 새 오류를 만들 수 있습니다.


15

같은 문제가 발생하여 인증서의 개인 키에 권한이 없음이 밝혀졌습니다.
수정하려면 certifacte 관리를 열고 인증서를 찾은 다음 마우스 오른쪽 단추를 클릭하고 개인 키 관리를 클릭 한 다음 보안에서 사용자가 추가되고 권한이 부여되었는지 확인하십시오.


15

내 경우에는 연결하려는 잘못된 유형의 인증서가 있습니다. "코드 서명" 대신 "서버 인증"
이있었습니다 . 의도 된 목적 섹션의 인증서 스냅에서이를 볼 수 있어야합니다. 그 후에는 잘 작동합니다.


1
즉, 나는이 답변을 찾기 위해 2 일 동안 고심하고있었습니다.
Hakan Fıstık

14

다른 사람 이이 문제를 겪는 경우 : signtool.exe 앱을 사용하기 전에 명령 프롬프트를 관리자로 실행해야한다는 문제가 발생했습니다. 그런 다음 모든 것이 훌륭하게 작동합니다.


11
내 경우에는 도움이되지 않았습니다.
bgplaya

1
VS2015에서 스크립트로 signtool을 실행하고 있으며 동일한 문제가 발생했습니다. VS2015를 관리자로 실행했으며 signtool에서 내 파일에 서명 할 수있었습니다.
hamaney

10

콘솔 응용 프로그램 개발빠른 해결 방법 으로 동일한 문제가 발생했습니다 .

로 이동 project properties한 후,

signing탭을 클릭 하고 "ClickOnce 매니페스트 서명"을 선택 취소 하십시오 .

이미지 설명 :

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

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

참고 로이 1 분 미만의 비디오 솔루션 도 볼 수 있습니다 . 위의 사진은 비디오에서 촬영 한 것입니다.


1
테스트 인증서 작성을 클릭하여 계속 수행 할 수도 있습니다. 감사
MindRoasterMir

9

/sm플래그를 사용하여 기본값 인 내 (로컬 사용자) 저장소 대신 머신 저장소를 찾도록 지정 하여이 문제를 해결했습니다 . 또한를 사용하여 signtool의 디버그를 켜는 데 도움이 될 수 있습니다 /debug.


8

나는이 문제가 있었고 아래 단계 중 어느 것이 효과가 있었는지 완전히 확신하지 못하지만 이것이 다른 누군가를 도울 수 있기를 바랍니다 ... 이것이 내가 한 일입니다.

  • 다운로드 한 인증서 (.crt)를 인증서에 설치합니다 ( "개인"저장소에 넣습니다). .crt 파일을 마우스 오른쪽 단추로 클릭하고 인증서 설치를 클릭하십시오 .
  • 개인 키 및 확장 속성 (아마도 불필요 함)을 포함하여 인증서를 첫 번째 단계에서 사용한 저장소에있는 pfx 파일로 실행 certmgr.msc하고 내보내 십시오.
  • 프로젝트 서명시 내 보낸 .pfx 파일 사용
  • signtool의 예 : signtool sign /f "c:\mycert.pfx" /p mypassword /d "description" /t http://timestamp.verisign.com/scripts/timstamp.dll $(TargetPath)
    비밀번호는 내보내기 중에 제공된 것과 동일합니다.

1
고마워, 이것은 트릭을했다. .crt인증서를 설치하는 대신 Comodo에서 제공 한 파일을 사용하고 파일을 내보냈습니다 .pfx.
Joshua Pinter

1
정말 고맙습니다!
Bruno Soares

6

동일한 문제가 발생하여 (여기에 게시 된) 일부 답변을 읽었으며 인증서가 만료 된 것을 보았습니다.

시작 프로젝트에서 새 것을 만드십시오. 그런 다음 인증서 관리자에서 만료 된 인증서를 삭제했습니다.

이제 모든 것이 잘 컴파일됩니다.


5

기준에는 계정 이름 (계정이 연결된 개인 키), 도메인, 회사, 만료 날짜, 의도 된 목적 등이 포함됩니다.

이 오류가 발생하는 데는 여러 가지 가능한 이유가 있으며 일부는 이미 나열되어 있습니다. 또 다른 팁은 다음과 같습니다. 인증서를 가져올 때 인증 기관 (CA)에서받은 원본 파일로 작업 하지 않으면 일부 속성이 손실 될 수 있습니다.

예 : 최근에 같은 컴퓨터의 다른 계정에서 내 보낸 인증서를 가져 오려고했습니다. 인증서가 내 계정에 표시되었지만 내 계정과 연결되지 않아 signtool파일 이름과 암호를 명시 적으로 제공하지 않고 인증서 를 인식 하지 못했습니다 . 빌드 프로세스의 일부로 수행되고 배치 파일 또는 소스 파일에 명시 적으로 작성된 경우 충분히 안전하지 않을 수 있습니다. (원본 CA 발급 인증서를 가져 와서 해결했습니다.)


4

동일한 " 개인 키 필터 후, 0 인증서가 남았습니다 "라는 메시지가 표시되어 메시지의 의미를 파악하려고 너무 많은 시간을 보냈습니다.

문제는 Windows 인증서 저장소에 인증서를 잘못 설치하여 코드 서명 인증서와 관련된 개인 키가 없다는 것입니다.

내가해야했던 것은 이것이었다 :

  1. Firefox 또는 Internet Explorer를 사용하여 요청을 발행자에게 제출하십시오. 브라우저에 의해 자동 저장되는 PRIVATE KEY가 생성됩니다 (Firefox에 1 초 동안 대화 상자가 나타납니다). 다른 브라우저는 작동하지 않을 수 있습니다. 수명이 너무 짧아 브라우저가 작동하는지 확인할 수 없습니다.

  2. 요청을 제출하고 발급자의 검증 후프와 루프를 뛰어 넘고 염소를 희생하고 신들에게기도하고 조부모의 서명 진술서를 제출하십시오.

  3. 인증서 (.crt)를 다운로드하여 동일한 브라우저 로 가져 오십시오 . 브라우저에는 이제 개인 키와 인증서가 모두 있습니다 .

  4. 브라우저에서 인증서를 개인 정보 교환 (.p12) 파일로 내 보냅니다. 이 파일을 보호하기 위해 비밀번호를 제공하라는 메시지가 표시됩니다.

  5. .p12 파일의 백업 사본을 보관하십시오.

  6. 인증서 관리자 (certmgr.msc)를 실행하고 개인 인증서 저장소를 마우스 오른쪽 단추로 클릭 한 후 모든 태스크 / 가져 오기 ...를 선택 하고 .p12 파일을 Windows로 가져 오십시오. 파일을 보호하는 데 사용한 비밀번호를 묻는 메시지가 표시됩니다. 이 시점에서 보안 요구 사항에 따라 키를 내보내기 가능으로 표시하여 Windows 스토어에서 사본을 복원 할 수 있습니다. 배치 스크립트를 중단하려는 경우 사용하기 전에 비밀번호가 필요함을 표시 할 수도 있습니다.

  7. signtool을 성공적으로 실행하고 안도의 한숨을 쉬며 잘못된 오류 메시지와 문서 부족 또는 누락으로 인해 얼마나 많은 시간을 낭비했는지 숙고하십시오.


2

나는이 문제도 가지고 있었고, 많이 시도했다. Visual Studio 서명뿐만 아니라 SDK를 사용했지만 "모든 주어진 기준에 맞는 인증서를 찾을 수 없습니다."

솔루션 : "개인 키 필터 이후": '0 left'옵션에 signtool sign / debug ... 옵션이 표시되면 PC에 상점 자체에 CA가없는 것입니다. 이 문제를 해결하려면 먼저 CA (내 경우에는 .crt 파일)를 설치 한 다음 부호를 다시 실행하십시오. 지금 작동합니다!

Signtool은 동일한 PC가 소유 한 요청한 CA에서만 사용할 수 있습니다.


다른 PC에서 온 CA와 함께 signtool을 사용하는 데 아무런 문제가 없었습니다.
bparker

2

내 문제는 결국 signtool 옵션을 이해하지 못한다는 것입니다. / n 옵션에 인증서와 일치하지 않는 것을 제공했습니다. 내가 그것을 제거했을 때 그것은 불평 중지했다.


2

컴퓨터 이름이 변경되어 인증서가 만료 된 것과 비슷한 문제가있었습니다. 새 테스트 인증서를 만들어이 문제를 해결할 수있었습니다.

Visual Studio의 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오. 속성을 선택하십시오. 등록 정보 창에서 서명을 선택하십시오. "테스트 인증서 생성 ..."을 클릭하십시오. 테스트 인증서의 비밀번호 정보를 입력하고 확인을 클릭하십시오.


2

/ debug를 사용하면 "개인 키 필터 후 0 개의 인증서가 남았습니다."라는 메시지가 표시되면 pfx 파일에 개인 키가 없기 때문일 수 있습니다. 설치된 인증서를 pfx 파일로 내보낼 때 개인 키도 포함하도록 확인란을 활성화해야합니다.


1

컴파일을 시작하기 전에 project properties모든 필드로 이동하여 선택을 취소하십시오.Firm

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