Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

SignTool Error: No certificates were found that met all the given criteria.

2년에 한번 정도 인증서 서명을 하는 거라서... 어쨌든 잘 되었던 건데... 오늘따라 유독 다음과 같이 에러를 내는군요. ^^;

c:\temp>signtool sign /v /sm /n "JenniferSoft" /t http://timestamp.verisign.com/scripts/timestamp.dll c:\temp\SimpleCtl.cab
SignTool Error: No certificates were found that met all the given criteria.

그런데, 분명히 "Certificates (Local Computer)" 영역에 아래와 같이 해당 인증서가 등록되어 있습니다.

signtool_error_no_cert_1.png

도대체 왜 저 인증서를 선택할 수 없는 걸까요?

문제 분석을 위해 /debug 인자를 주어 signtool을 실행해 보니 다음과 같은 결과가 나옵니다.

c:\temp>signtool sign /debug /v /sm /n "JenniferSoft" /t http://timestamp.verisign.com/scripts/timestamp.dll c:\temp\SimpleCtl.cab

The following certificates were considered:
    Issued to: 00187FFEB65431D2.devicedns.live.com
    Issued by: Token Signing Public Key
    Expires:   Mon Jul 06 13:24:17 2015
    SHA1 hash: FCF06C818A92ABCD0EE43B2E26A703ED8922F3CE

    Issued to: Windows Media Player Network Sharing Service
    Issued by: Windows Media Player Network Sharing Service
    Expires:   Mon Jan 07 13:29:13 2115
    SHA1 hash: F0AA1A0CFD5C1828F546EA1938B17A30883F0F09

    Issued to: NVIDIA GameStream Server
    Issued by: NVIDIA GameStream Server
    Expires:   Tue Aug 01 16:50:41 2034
    SHA1 hash: DFF09CEEF603B5C546C4DFC796283AD82E6C55E7

    Issued to: localhost
    Issued by: localhost
    Expires:   Thu Nov 30 09:00:00 2017
    SHA1 hash: 51A836E02847FC99FAA9482F146B159FC2AD7248

    Issued to: JenniferSoft
    Issued by: Symantec Class 3 SHA256 Code Signing CA
    Expires:   Tue May 02 08:59:59 2017
    SHA1 hash: 1916192451A238F95F52D6A04B620EDF0EEFDF33

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

그림에서 봤던 00187FFEB65431D2.devicedns.live.com, Windows Media Player Network Sharing Service, NVIDIA GameStream Server, localhost, JenniferSoft 인증서들이 나열된 것을 보니 "Certificates (Local Computer)" 영역을 검색한 것은 맞습니다.

그런데, EKU 조건, expiry, Subject Name 조건까지 만족하는 인증서가 1개 있었는데 결정적으로 "Private Key" 조건을 만족하는 인증서가 없었다는 것을 보여줍니다.

더더욱 이상하군요. 해당 인증서는 분명히 개인키를 갖고 있음을 다음과 같이 확인할 수 있었습니다.

signtool_error_no_cert_2.png

혹시나 싶어, 마우스 우클릭을 해 다음과 같이 "Manage Private Keys..." 메뉴를 선택해 보았는데,

signtool_error_no_cert_3.png

이와 같이 권한 목록이 나왔습니다.

signtool_error_no_cert_4.png

즉, SYSTEM, Administrators에게 권한이 있고 "Logon SessionId..."라는 계정이 있지만 분명한 것은 현재 로그인 계정은 아니라는 점입니다. 테스트를 위해 "관리자 권한으로 실행한 cmd.exe"에서 signtool 명령을 내리니 정상적으로 서명이 되었습니다.

그렇군요. 따라서, 현재 로그인 계정을 명시적으로 추가하고 "Read" 권한만 주는 것으로 문제 해결을 할 수 있었습니다.




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 11/22/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 46  47  48  49  50  51  52  53  54  55  56  [57]  58  59  60  ...
NoWriterDateCnt.TitleFile(s)
12201정성태3/18/202010831오류 유형: 611. git-credential-manager.exe: Using credentials for username "Personal Access Token". [1]
12200정성태3/18/202011289VS.NET IDE: 145. NuGet + Github 라이브러리 디버깅 관련 옵션 3가지 - "Enable Just My Code" / "Enable Source Link support" / "Suppress JIT optimization on module load (Managed only)"
12199정성태3/17/20209142오류 유형: 610. C# - CodeDomProvider 사용 시 Unhandled Exception: System.IO.DirectoryNotFoundException: Could not find a part of the path '...\f2_6uod0.tmp'.
12198정성태3/17/202011851오류 유형: 609. SQL 서버 접속 시 "Cannot open user default database. Login failed."
12197정성태3/17/202011000VS.NET IDE: 144. .NET Core 콘솔 응용 프로그램을 배포(publish) 시 docker image 자동 생성 - 두 번째 이야기 [1]
12196정성태3/17/20208921오류 유형: 608. The ServicedComponent being invoked is not correctly configured (Use regsvcs to re-register).
12195정성태3/16/202010656.NET Framework: 902. C# - 프로세스의 모든 핸들을 열람 - 세 번째 이야기
12194정성태3/16/202012986오류 유형: 607. PostgreSQL - Npgsql.NpgsqlException: sorry, too many clients already
12193정성태3/16/20209601개발 환경 구성: 485. docker - SAP Adaptive Server Enterprise 컨테이너 실행 [1]
12192정성태3/14/202012070개발 환경 구성: 484. docker - Sybase Anywhere 16 컨테이너 실행
12191정성태3/14/202012435개발 환경 구성: 483. docker - OracleXE 컨테이너 실행 [1]
12190정성태3/14/20208595오류 유형: 606. Docker Desktop 업그레이드 시 "The process cannot access the file 'C:\Program Files\Docker\Docker\resources\dockerd.exe' because it is being used by another process."
12189정성태3/13/202013442개발 환경 구성: 482. Facebook OAuth 처리 시 상태 정보 전달 방법과 "유효한 OAuth 리디렉션 URI" 설정 규칙
12188정성태3/13/202015641Windows: 169. 부팅 시점에 실행되는 chkdsk 결과를 확인하는 방법
12187정성태3/12/20208391오류 유형: 605. NtpClient was unable to set a manual peer to use as a time source because of duplicate error on '...'.
12186정성태3/12/20209467오류 유형: 604. The SysVol Permissions for one or more GPOs on this domain controller and not in sync with the permissions for the GPOs on the Baseline domain controller.
12185정성태3/11/202010128오류 유형: 603. The browser service was unable to retrieve a list of servers from the browser master...
12184정성태3/11/202011576오류 유형: 602. Automatic certificate enrollment for local system failed (0x800706ba) The RPC server is unavailable. [3]
12183정성태3/11/20209934오류 유형: 601. Warning: DsGetDcName returned information for \\[...], when we were trying to reach [...].
12182정성태3/11/202011139.NET Framework: 901. C# Windows Forms - Vista/7 이후의 Progress Bar 업데이트가 느린 문제파일 다운로드1
12181정성태3/11/202011948기타: 76. 재현 가능한 최소한의 예제 프로젝트란? - 두 번째 예제파일 다운로드1
12180정성태3/10/20208554오류 유형: 600. "Docker Desktop for Windows" - EXPOSE 포트가 LISTENING 되지 않는 문제
12179정성태3/10/202019957개발 환경 구성: 481. docker - PostgreSQL 컨테이너 실행
12178정성태3/10/202011451개발 환경 구성: 480. Linux 운영체제의 docker를 위한 tcp 바인딩 추가 [1]
12177정성태3/9/202011111개발 환경 구성: 479. docker - MySQL 컨테이너 실행
12176정성태3/9/202010527개발 환경 구성: 478. 파일의 (sha256 등의) 해시 값(checksum) 확인하는 방법
... 46  47  48  49  50  51  52  53  54  55  56  [57]  58  59  60  ...