2017-05-18 9 views
0

저는 C#과 Excel을 결합한 VSTO 프로젝트를 가지고 있습니다. 고용주가 pfx 파일이없는 인증서를 사용하여 서명하도록 요구합니다. 칩 카드에만 인증서가 있습니다.pfx 파일없이 Excel/VSTO 프로젝트에 서명하기

VSTO에 서명 할 때 대부분의 설명서와 질문을 읽었지만, 모두 pfx 파일이 있다고 가정합니다.

  1. 선택하는 chipCard에서 인증서 "Store에서 선택"을 사용하여, 체크 "를 ClickOnceManifest이 가입" "는 Assemly에 서명하는 것은"체크 : Visual Studio에서 내 설정은 다음과 같다. 나는 pfx 파일을 가지고 있지 않아서 "New"를 누르고 assemblySigningCertificate.pfx라는 인증서를 만들었습니다. (이것은 완전히 가짜 단계 일지 모르지만 그게 유일한 pfx입니다)
  2. 프로젝트를 게시 한 후 이 모든 작업이 완료되면

    set AppPublishPath=publish 
    set AppPublishVersionPath=publish\Application Files\diagramUnifier_1_0_0_0 
    
    copy bin\Debug\*.dll "%AppPublishVersionPath%" 
    copy bin\Debug\*.dll.config "%AppPublishVersionPath%" 
    copy bin\Debug\*.exe "%AppPublishVersionPath%" 
    
    mage.exe -update "%AppPublishVersionPath%\diagramUnifier.dll.manifest" -ch "… certificate hash from certmgs.msc " 
    mage.exe -update "%AppPublishVersionPath%\diagramUnifier.vsto" -appmanifest "%AppPublishVersionPath%\diagramUnifier.dll.manifest" -ch "… certificate hash from certmgs.msc " 
    mage.exe -update "%AppPublishPath%\diagramUnifier.vsto" -appmanifest "%AppPublishVersionPath%\diagramUnifier.dll.manifest" -ch "… certificate hash from certmgs.msc " 
    

등 Mage.exe는을 사용하여 서명을 업데이트하는 스크립트는, 내가 VSTO를 설치하고 XLSM 파일을 실행합니다. "제공된 서명 알고리즘에서 SignatureDescription을 만들 수 없습니다." VSTO 파일을 가리키는 오류가 발생했습니다. 오류의 세부 사항은 stackTrace 만 제공하고 다른 것은 제공하지 않습니다.

내 질문은 : 그것은 내가 PFX 파일을 가지고있는 인증서없이 VSTO 프로젝트에 서명도 가능

  1. 입니까?
  2. pfx 파일이 없으면 설정의 "어셈블리 서명"섹션에 새 인증서를 만드는 것이 옳은가요
  3. 완전히 다른 작업을 수행하고 있습니까?

어떤 도움이 많이 감사합니다, 다니엘

답변

1

문제 : 인증서가하는 SelfCert.exe를 사용하여 생성 될 때, 그것은 내보낼 수 없습니다 개인 키가 있습니다. Windows 인증서 콘솔의 내보내기 마법사에 "연결된 개인 키가 내보낼 수없는 것으로 표시되어 있습니다"라고 표시됩니다.

솔루션 버전 1 :이 을 만들기 위해 "-pe"옵션 Makecert.exe를하고 내보낼 수있는 개인 키를 사용하여 인증서를 저장 :

makecert -r -pe -n "CN = 사용자 이름 "-b 01/01/2000 -e 01/01/2099 -eku 1.3.6.1.5.5.3.3 -ss My

그런 다음 개인 인증서를 포함하여 Windows 인증서 저장소에서 인증서를 내보낼 수 있습니다 키.

참고 : 이전 버전의 makecert.exe에서는 "-pe"옵션을 지원하지 않습니다. .NET Framework SDK 2.0 및 2002 년 10 월 버전의 Platform SDK (빌드 3718.1)에는 "-pe"옵션을 지원하는 makecert.exe (5.131)의 새 버전이 포함되어 있습니다. (.NET Framework SDK 1.0 및 1.1에는 "-pe"옵션을 지원하지 않는 makecert.exe의 이전 버전이 모두 포함되어 있습니다).

솔루션 버전 2 : 다음 명령은 PFX 파일을 만들 수 있습니다 (PKCS # 12) 관련 개인 키와 함께 를 자체 서명 된 인증서를 포함하는 :

makecert -r -n "CN=Your Name" -b 01/01/2000 -e 01/01/2099 -eku 1.3.6.1.5.5.7.3.3 -sv selfcert.pvk selfcert.cer 
cert2spc selfcert.cer selfcert.spc 
pvkimprt -pfx selfcert.spc selfcert.pvk 

마지막 명령 (pvkimprt -pfx)은 selfcert.pfx 파일을 만듭니다. 그런 다음이 PFX 파일을 Windows 인증서 저장소로 가져 와서 코드 서명에 사용할 수 있습니다. (makecert.exe 및 cert2spc.exe는 microsoft.com에서 다운로드 할 수있는 Platform SDK 또는 DotNet SDK와 같이 여러 Microsoft SDK의 일부입니다 .pvkimprt.exe는 Microsoft에서 개별적으로 다운로드 할 수 있습니다.)

+0

감사합니다. 고용주의 IT 보안 부서 인 명확히 밝혀야합니다. 누구나 pfx 파일을 갖고 싶지는 않습니다 (이유를 모름). 그래서 pfx 파일을 얻는 유일한 방법은이 VSTO 서명 상황에서 필요한 것을 얻는 것입니까? –

+0

예. 실제 pfx 파일이 필요합니다. 자체 테스트 환경을 사용하지 않는 한 – Hyrein

0

Are 당신은 인증서의 개인 키가 없다고 말하는가? 그렇다면 어셈블리/설치 프로그램에 서명 할 수 없습니다. 서명의 요점은 어셈블리가 신뢰할 수있는/인증 된 출처 (즉, 인증서 (개인 키) 소지자)로부터 온 것임을 증명하는 것입니다.

고용주는 누구입니까? 대기업은 IT/보안 부서를 통해 서명 된 설치자 및 어셈블리를 얻을 수있는 프로세스를 갖추고 있습니다. 네가 일하는 곳이 아니라는 것을 두 번 확인해.

다른 점 ... .NET4.5를 설치 했습니까? (

이 변화는 우리가 기본적으로 (SHA-1) NetFX4.5에서 매니페스트 서명하고 대신, 최신 버전을 사용하는 기존 인증서 사용을 중단한다는 사실 때문입니다 ... 그것은 도움이 될 here보기 SHA-256)이며 NetFx4.0 런타임에서 인식되지 않습니다. 따라서 매니페스트를 구문 분석하는 동안 4.0 런타임 에 잘못된 매니페스트가 표시됩니다. 레거시 프레임 워크의 경우 을 사용하여 대상 런타임이없는 상자에서 ClickOnce 응용 프로그램을 실행하면 ClickOnce가 "xxxx.xx 런타임 이 응용 프로그램을 실행해야합니다"라는 메시지를 사용자에게 팝업합니다. 그러나 .NET 4.5를 설치하면 4.5 ClickOnce 응용 프로그램이 .NET 4.0이 설치된 상자에서 을 실행하면 메시지에 잘못된 매니페스트가 표시됩니다. 이 문제를 해결하려면 .Net Framework 4.5를 대상 시스템에 설치해야합니다.

+0

감사합니다. 무엇이든 서명하는 것에 관해서 - 고용주는 모든 개발자에게 pfx 파일을 건네주지 않습니다. VSTO를 사용하는 사람 이건 아니건간에. C#으로 개발하는 사람들은 칩 카드를 사용하여 코드에 서명 할 수 있다고 생각합니다. 그렇지 않으면 칩 카드가 전혀 필요 없습니다. 내 고용주는 나라에서 가장 큰 은행이지만 IT 부서는 내 코드에 대한 단서가 없으므로 내 인증서가 아닌 다른 것으로 서명하는 것을 정말로 꺼리게됩니다. –

+0

나는 인증서를 준 IT Security Dpt와 이메일을 끊임없이 교환하고있다. 그러나 ClickOnce 등은 아무 것도 모른다. 예,이 오류가 발생한 컴퓨터에서 .NET 4.5 이상 만 설치되어 있습니다. –

+0

큰 조직을 위해 일하기 때문에 언급했는데 내가 추가 기능에 서명해야 할 때 지원 사례를 열어야합니다. 지원 사례는 약 10 명의 관리자가 승인 한 매우 긴 과정을 거쳐 결국 바탕 화면에 나타납니다 친절 하 게 서명 하 고 그것을 우리에 게 다시 전달하는 IT 시스템 엔지니어의 ... –