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

1  [2]  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
5907민성4/21/20233295안녕하세요 서버 백업 문제에 대해서 [2]
5906guest4/21/20233430Dispatcher 서비스 구현 질문 [1]
5905guest4/20/20233741tabControl의 tabPage가 여러 개일 때 순서를 바꾸기가 까다롭네요 [5]
5904guest4/18/20233659[신규자료첨부] DLL 'SQLite.Interop.dll'을 찾을 수 없습니다 [4]파일 다운로드1
5903guest4/18/20233130fileSystemWatcher 이벤트 관련 질문입니다 [2]
5902guest4/17/20233758c#으로 USB 관련 질문 [2]
5901guest4/17/20233324내솔루션 판매 시 1.0.0.0 폴더와 Sqlite 배포 [5]
5900guest4/17/20234484DLL 'SQLite.Interop.dll'을 찾을 수 없습니다 [2]파일 다운로드1
5899guest4/17/20233437Dictionary와 Linq [4]
5898차가워4/17/20233241CNTK 교육 문의 [1]
5897guest4/17/20233173Socket스레드와 UI thread [4]
5896HAN4/16/20233158c언어 return 에 대해 궁금한게 있어요. [1]파일 다운로드1
5895guest4/15/20232911Drag and Drop - 모든 컨트롤 [2]
5894송부장4/14/20234299[질문] Visual Studio 2022에서 '도구 상자 항목 선택'의 'COM 구성 요소' 탭에서 ActiveX 목록이 보이지 않습니다. [3]파일 다운로드2
5893감사합니...4/14/20232911오라클 OLEDB방식 접속 후 SELECT 'TEST' TEST_VALUE FROM DUAL의 값이 이상합니다. [1]
5892한무4/14/20233099C# 으로 백그라운드에서 워드를 실행하여 매크로 실행이 가능 할까요? [2]
5891리세4/14/20232999안녕하세요.C# 서버프로그램에서의 Mysql 쿼리문제(다중쿼리 실행)에 대해 문의드립니다. [2]
5890guest4/14/20233653C# 프리랜서로 돈 벌려면 성태님 책 마스터하면 되나요? [6]
5889전예찬4/14/20232837C# 파일 복사 관련 질문 드립니다. [3]
5888정경구4/12/20233117C# 첫 환경 세팅과 관련해서 [4]
5887HAN4/12/20232749안녕하세요 파이썬도 공유 가능 할까요? [1]
5886guest4/11/20233142필요한 어셈블리만 다운로드 및 재로딩하는 방법에 관하여 [2]
5885guest4/11/20232990c#으로 드림위버같은 거 만들어볼려는데요 [6]
5884궁금이4/11/20232864부모 클래스에서 예외 발생시 힙 영역에 할당 ? [2]
5883코딩초짜4/9/2023276510c언어 usleep 에 대해서 요 [2]
5882조은현4/7/20232821선생님 안녕하세요! wpf의 성능 개선에 대해서 질문드려요! [1]파일 다운로드1
1  [2]  3  4  5  6  7  8  9  10  11  12  13  14  15  ...