Microsoft MVP성태의 닷넷 이야기
C# CodeSign에 대해 여쭤볼 것이 있습니다 [링크 복사], [링크+제목 복사]
조회: 2644
글쓴 사람
김혜원 (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








donaricano-btn



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


[손님]

1  2  3  4  5  [6]  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5396여정욱10/15/20201044CLR heap 관련 질문 2 [2]
5395여정욱10/14/20201231CLR heap 관련 질문 [2]
5394진우10/12/20202301닷넷코어 (닷넷5) winform wpf는 리눅스/맥에서도 가능한가요? [2]
5393김세용9/23/20201688C#에서 대량의 클래스를 빠르게 생성하는 방법이 없을까요? [6]
5392전경호9/22/20201217WPF에서 WindowsFormsHost의 메모리 누수 문제 때문에 문의드립니다. [1]파일 다운로드1
5391민성9/22/20201192안녕하세요 항상 감사드립니다. 하나 질문 드리겠습니다. [1]
5390alower9/18/20201544System.AccessViolationException 보호된메모리 부분 예외처리 [1]
5389C# 8.0 구매자9/18/20201407후위 증감 연산자 오버로딩 방법 좀 알려주세요 [4]
5388영귤9/17/20201495Nullable reference type 에 Non-nullable reference type 을 대입해도 경고가 발생하지 않습니다. [2]
5387하태9/17/20201343안녕하세요! 비동기 통신과 관련하여 질문하나만 드리겠습니다! [3]
5386박민웅9/16/20201631정성태 스승님 안녕하세요 !! [1]
5385영귤9/12/202012003항 연산자에 ref 지원? [1]
5384손님9/10/20201186시작하세요! C# 8.0 프로그래밍 책에 오타가 있는 것 같습니다. [3]
5383민성9/8/20201436안녕하세요 자주 도움을 주셔서 감사드립니다. WPF에서 크롬 브라우저 삽입에 대하여 [1]
5382정씨9/4/20201595[C#] 시리얼통신 수신된 데이터를 그리드뷰에 뿌르는데 일정 시간이 지나면 버벅 거리는 이유가 뭘까요?? [3]
5381질문 있어요9/4/20201488웹으로 사용하는 c#과 응용프로그램으로 사용하는 c#이 많이 다른가요?? [2]
5380yeon9/3/20201321winform 의 datagridview는 바인딩이 안 되나요? [1]
5379손님9/2/20201611시작하세요! C# 8.0 프로그래밍 책에 오타가 있습니다. [3]
5378net9/2/20201410mes 응용프로그램을 .net 웹폼으로 만들기도 하나요? [2]
5377net9/2/20201327.net 사용한 웹폼으로 응용프로그램을 만들경우 [1]
5376영귤9/1/20201332nullable 타입간의 비교연산은 그냥 가능한 건가요? [1]
5375영귤8/30/20201840이벤트와 델리게이트의 차이가 궁금합니다. [2]
5374손님8/27/20201674시작하세요! C# 8.0 프로그래밍 책에 오타가 있습니다. [1]
5373agj8/26/20201245System.Single::ToString()함수의 IL코드를 보았는데 ldnull, throw가 전부입니다. 왜 이렇게 짧죠? [2]
5372민성8/24/20201703안녕하세요 WPF 웹브라우저 컨트롤에서 웹브라우저 자체를 엣지로 할 수가 있나요? [2]
5371서현준8/11/20201226Hyper-V 내부 네트워크 환경 중, VM 에서 인터넷 접속 [1]
1  2  3  4  5  [6]  7  8  9  10  11  12  13  14  15  ...