Microsoft MVP성태의 닷넷 이야기
C# CodeSign에 대해 여쭤볼 것이 있습니다 [링크 복사], [링크+제목 복사]
조회: 9356
글쓴 사람
김혜원 (kimhw0001 at naver.com)
홈페이지
첨부 파일
 

안녕하세요, 항상 홈페이지와 책에서 많은 지식을 도움받고 있으며 정말 감사합니다.

다름이 아니라 충분히 자료를 많이 찾아보려고 노력했지만 검색 기술이 부족한 것인지..
지금 며칠째 풀리지 않는 일이 있어 도움을 청하고자 글을 남깁니다.

글로 작성하는거라 읽기 어려울 수도 있겠지만.. 최대한 잘 정리해서 질문드립니다.

[현재 정보]
- Thawte인증기관의 Codesign을 사용하고 있습니다. (signtool 사용)
- 프로젝트는 C# .NET Framework가 기반이며 한 솔루션이 4개의 프로젝트로 이루어져있습니다.
- 그 중 3개는 일반 exe파일을 생성하는 프로젝트이며 제일 마지막 프로젝트는 msi파일을 만드는 package 프로젝트입니다.
- package 프로젝트는 위의 3개의 exe파일과 몇가지 dll, xml 등의 파일로 msi를 구성합니다.
- 명령프롬프트 창에서 수동으로 exe 파일에는 서명이 잘 들어가는 걸 확인했습니다.
- 명령프롬프트 창에서 수동으로 msi 파일에서는 서명이 되지 않으며 제가 사용한 코드와 에러코드는 아래와 같습니다.
- Thawte기관에서는 msi파일에 서명할 수 있다고 합니다.
- Thawte기관의 codesign을 구매대행해준 업체에 메일을 보냈으나, 기술팀이 검토하고 있다고 하며, 아직 연락을 받지 못했습니다.


사용 코드 : signtool.exe sign /f (pfx경로) /p (패스워드) /as /fd sha256 /tr (타임스템프 경로) /v (msi의 경로)
에러 코드 : SignTool Error: Multiple signature support is not implemented for this filetype.
SignTool Error: An error occurred while attempting to sign: (msi 경로)


[시도 정보]
1. 해결을 위해 첫번째로 제가 위해 사용한 방법은 Visual Studio 내에서 빌드 이벤트로 Codesign을 넣었습니다.
- 빌드 후 이벤트에 서 진행하였으며 역시나 exe파일에는 서명이 들어가고 msi프로젝트는 빌드 실패합니다.

2. msi에 서명을 하지 못하더라도 내부의 exe파일만 제대로 해보자 해서 exe파일들은 서명한 채 msi로 묶었습니다.
- setup.msi을 실행하면 exe의 서명들이 다 사라집니다.
- 혹시 이와같은 현상의 이유를 알 수 있을까요..?

3. 다른 사람들의 글을 인용하여 명령어를 바꿔보았습니다.
- 결과는 1번과 같았습니다.


사실 인증을 지원을 안해주는게 아닌가..? 라고 생각하고 싶지만
다들 잘 하는 것 같으니 그건 아니겠지요...ㅎㅎ


=======================================================================

[질문]

1. 시도 정보의 2번처럼 왜 exe서명들이 msi로 묶은 후 설치했을 때 사라지는지 알 수 있을까요?
2. 혹시 msi파일에 CodeSign을 적용해 본 사례가 있다면 무엇이 문제인지 힌트를 주실 수 있나요?




결국 어쩌다보니 해결해달라!! 이렇게 보일수도 있지만..ㅠㅠ 그게 아니라는 점만 알아주셨으면 좋겠습니다.
아직 구글 검색이 서툴러서 그런 것도 이해해주시고 감안해주시면 정말 감사할 것 같습니다.

해결방안에 대한 힌트를 조금이라도 얻을 수 있다면 그것만으로도 감사할 것 같습니다.
긴 글 읽어주셔서 감사합니다 ㅜㅜ

=======================================================================

참고한 대표적인 페이지들인데 혹시나 해서 링크 남겨드립니다.

* https://social.msdn.microsoft.com/Forums/windows/en-US/b33fc15d-d125-44b1-846a-7f461f3b1504/sign-assembly-with-pfx-certificate?forum=winformssetup
* http://www.ssesetup.com/articles/codesigning-sha256.html
* https://www.exemsi.com/documentation/sign-your-msi/
* https://docs.microsoft.com/en-us/windows/win32/seccrypto/signtool












[최초 등록일: ]
[최종 수정일: 11/18/2019]


비밀번호

댓글 작성자
 



2019-11-18 06시57분
그럼, 그냥 기본 코드의 ConsoleApp 프로젝트와 설치 프로젝트만 포함시키고 test 인증서로 코드 서명한 작업까지 한 최소한의 프로젝트를 올려 주세요.
정성태
2019-11-18 07시54분
참고로, "SignTool Error: Multiple signature support is not implemented for this filetype." 오류의 원인은 signtool에 "/as" 옵션을 주었기 때문입니다. 이것은 다중 서명을 할 때 사용하는 것으로 최초 서명 시에 옵션을 주면 그런 오류가 발생합니다. 자세한 내용은 다음의 글을 참고하세요.

signtool.exe의 다중 서명 기능
; http://www.sysnet.pe.kr/2/0/10875
정성태
2019-11-18 09시34분
다음의 글을 참고하세요.

"Microsoft Visual Studio Installer Projects" 프로젝트로 EXE 서명 및 MSI 파일 서명 방법
; http://www.sysnet.pe.kr/2/0/12056

정성태
2019-11-19 10시13분
[김혜원] 우와..ㅠㅠ... 당연히 저녁에는 댓글을 안 다실줄 알고 혼자 끙끙거리고 있었는데..
오늘 아침에 확인하고 시도해봤습니다!!
달아주신 두 링크가 큰 도움이 되었어요..!!
진짜 너무너무 감사합니다ㅜㅜ 제가 글을 두서 없이 막 적은 것 같은데 문제점을 너무 잘 파악하주셨어요ㅜㅜ
덕분에 이렇게 또 하나씩 알아가네요! 더 열심히 공부해야겠습니다 ㅎㅎㅎ
정말 감사합니다!!


[guest]

... 16  17  [18]  19  20  21  22  23  24  25  26  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
5480한예지 donator4/5/20217362GetHashCode 질문있습니다! [2]
5479한예지 donator4/4/20216438Equals를 닷넷에서 어떻게 구현했는지 보고 싶을 떄는 어떻게 해야 될까요? [2]
5478갑자기C#3/23/20218892C# Winform에서 TextBox없이 입력 받을 수 있나요? [7]
5477달팽이3/18/20215899c# 도형을 그린후 편집하는 방법이 궁금합니다. [2]파일 다운로드1
5475dimo...3/2/20216926POH가 .NET 5에 추가된 것으로 알고 있습니다. POH가 유용한 경우는 어떤 경우가 있을까요? [1]
5474Syong2/26/20216461사용자 지정 컨트롤 생성시 Invalidate, Update, Refresh의 차이점 [2]
5473한예지 donator2/25/20216316디자인 타임이 뭔지 궁금합니다!! [5]
5472dimo...2/24/20217087등록하지 않고 ocx를 사용하는 `키움`관련 포스팅을 따라가다 질문드립니다. [9]
5471남산2/21/20215732MarshalDirectiveException 에 대한 질문입니다. [1]
5470한예지 donator2/7/20215657yield 질문있습니다!! [2]
5469유호성2/6/20215205Parallel + Task.Run 동시 실행 환경에서 간헐적으로 Task.Run()에서 null이 리턴됩니다. [3]파일 다운로드1
5467hero...2/4/20215577실행 환경에 따른 Thread.Sleep 딜레이 차이 질문 [8]
5466pr1/29/20215469c# winform load시 작업표시줄에 뜨지 않는 현상을 겪으신적이 있으신가요? [4]파일 다운로드1
5465영귤1/28/20215846두 번째 await 부터는 스레드 개수만 늘어나는 것이 아닌가요 [1]
5464민우1/26/20216132C# 빌드시 코드 치환되는걸 확인하는 방법 문의 [2]
5463한예지 donator1/24/20216845Parameters.AddWithValue 와 Parameters.Add 의 차이점이 궁금합니다. [2]
5462C#초보1/22/20217238사용자 정의 메시지 전달이 가능한가요? [2]
5461한예지 donator1/22/20216601AsEnumerable() 메서드 질문 있습니다! [2]
5459한예지 donator1/21/20215949typeof와 GetType의 차이점 질문있습니다. [2]
5458진우1/20/20216806C# DataTable 에 SQL 쿼리문을 실행하는 방법 문의 (LINQ 사용하지 않고) [6]
5456성민1/17/202172399.0 출간 계획이 있으신가요? [2]
5455한예지 donator1/16/20216280교재 194페이지 콜백메서드 질문 있습니다! [5]
5454한예지 donator1/15/20215908교재 208쪽 질문....있습니다... [3]
5453안녕하세요1/15/20217351C# dll 파일을 C++에서 사용 시 memory leak 문제 [2]파일 다운로드1
5452예지1/15/20216481var를 사용할 수 없는 이유가 궁금합니다! [3]
5451예지1/14/20215301for문의 초기식에 대해 질문드립니다. [3]
... 16  17  [18]  19  20  21  22  23  24  25  26  27  28  29  30  ...