development

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

big-blog 2020. 3. 31. 08:20
반응형

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


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

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

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

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

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


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

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

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

서명 속성

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


/ 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 버전에는 옵션이 없습니다.


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


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

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

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

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


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


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


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


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


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


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

  • 다운로드 한 인증서 (.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)
    비밀번호는 내보내기 중에 제공된 것과 동일합니다.

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

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

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


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

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

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


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

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

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


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


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

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


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


동일한 " 개인 키 필터 후, 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을 성공적으로 실행하고 안도의 한숨을 쉬며 잘못된 오류 메시지와 문서 부족 또는 누락으로 인해 얼마나 많은 시간을 낭비했는지 숙고하십시오.


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

참고 URL : https://stackoverflow.com/questions/22946399/signtool-error-no-certificates-were-found-that-met-all-given-criteria-with-a-wi

반응형