"인증서 저장소에서 매니페스트 서명 인증서를 찾을 수 없습니다"-새 키를 추가해도


153

강력한 이름 키 서명으로 프로젝트를 작성할 수 없습니다. 제목의 메시지가 항상 나타납니다.

예, 프로젝트는 처음에 다른 컴퓨터에서 복사되었습니다. 그러나 프로젝트 속성의 서명 탭을 통해 새 키를 추가하더라도이 오류는 계속 표시됩니다.

Visual Studio를 관리자로 실행하고 Windows 인증서 저장소에 키를 수동으로 추가하려고했습니다.

도움!

편집 : 새 프로젝트 에서이 오류가 발생하지 않지만 기존 프로젝트가 제대로 작동하도록하고 싶습니다. 새 인증서를 생성해도 작동하지 않습니다!


3
어떤 종류의 VS 프로젝트입니까? 프로젝트 속성 서명 탭에서 "ClickOnce 매니페스트 서명"도 선택 해제 했습니까?
Simon Mourier 2012 년

@Simon Mourier, 해당 옵션을 선택 취소하면 파일에 서명되지 않습니다. 서명을 원합니다! C # 프로젝트입니다. 랩톱이 아닌 내 주요 개발 시스템에서 잘 작동합니다.
Marcus

오류 메시지가 빌드 로그 또는 다른 방법으로 표시됩니까? 로그를 복사하여 붙여 넣으면 도움이 될 수 있습니다.
Owen Wengerd

빌드 로그의 오류 : "인증서 저장소에서 매니페스트 서명 인증서를 찾을 수 없습니다"
Marcus

허용 된 답변에 코드 줄이 표시되지 않았습니다. 그러나 이것은 나를 위해 일했습니다 : VS2015에서 새 키를 만들었습니다. 어셈블리 서명을 클릭하지 않고 저장했습니다. 그런 다음 파일에서 선택 버튼을 클릭하고 방금 만든 파일을 선택한 다음 어셈블리 서명을 다시 클릭하고 저장했습니다. 재건되었습니다.
Tim

답변:


234

나는 마침내 해결책을 찾았으며 이것이 다른 누군가에게도 도움이되기를 정말로 희망합니다.

  1. .csproj해당 프로젝트 의 파일을 편집하십시오 .
  2. 다음 코드 줄을 삭제하십시오.

    <PropertyGroup>
       <ManifestCertificateThumbprint>...........</ManifestCertificateThumbprint>
    </PropertyGroup>
    <PropertyGroup>
       <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile>
    </PropertyGroup>
    <PropertyGroup>
       <GenerateManifests>true</GenerateManifests>
    </PropertyGroup>
    <PropertyGroup>
       <SignManifests>false</SignManifests>
    </PropertyGroup>
    

1
나도 일했다. 그러한 행동에 대한 경고가 있습니까?
Doctor Coder

1
네, "Manifest"로 무엇이든 삭제하고 작동했습니다 :-)
s1cart3r

2
난 repercussions를 알지 않고서는 이것을하지 않을 것입니다 ... 어쨌든 않습니다
barnacle.m

제 경우 에는 문제를 삭제 ManifestCertificateThumbprint하고 ManifestKeyFile해결하십시오.
Ahmed Shamel 11:19

나를 위해 일했다. 이것이 어떤 영향을 미치는지 전혀 알지 못하지만 적어도 그들 중 하나는 작업중 인 프로젝트이므로 나에게 충분합니다.
Parrotmaster

148

Visual Studio에서 프로젝트의 "속성"으로 이동하십시오. 그런 다음 서명 탭으로 이동하십시오.

그런 다음 Click Once 매니페스트 서명이 해제되어 있는지 확인하십시오.


업데이트 된 지침 :

솔루션 탐색기 내에서 :

  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오
  2. 속성을 클릭하십시오
  3. 일반적으로 왼쪽 에서 "서명"탭을 선택하십시오.
  4. ClickOnce 매니페스트 서명 확인
  5. 반드시 저장하십시오!

여기에 이미지 설명을 입력하십시오


2
당신이 말한 것은 괜찮고 작동해야하지만 작동하지 않았습니다. 아래 질문에 대해 답 언급 한 바와 같이 결국 나는 코드의 행을 삭제했다
하미드 샤 히드

1
이것이 무엇을하고 /이 행동은 무엇을 의미합니까?
LazerSharks

@TrailMix 설정 파일을 적절히 수정합니다.
ADL

1
이것은 나에게 vs2010에 대한 해결책을 주었다 :) 위로!
jace

1
좋은 대답입니다! VS2012를 사용하고 있으며 실제로 작동합니다! +1
kiLLua

15

간단 해!!

다음 단계에 따라이 문제를 해결했습니다.

  1. 프로젝트 속성 열기 img
  2. 서명 탭을 클릭하십시오
  3. "조회 서명"을 선택 해제하십시오.

그게 다야 !!


13
  1. 메모장에서 .csproj 파일을 엽니 다.
  2. 인증서 저장소에서 인증서 서명과 관련된 다음 정보를 삭제하십시오.

    <PropertyGroup>
      <ManifestCertificateThumbprint>xxxxx xxxxxx</ManifestCertificateThumbprint>
      <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile>
    <GenerateManifests>true</GenerateManifests>
    <SignManifests>false</SignManifests>
    </PropertyGroup>
    

11

이것을보십시오 : 프로젝트를 마우스 오른쪽 버튼으로 클릭-> 속성으로 이동 -> 클릭 서명 > - 화면의 왼쪽은 선택을 취소 매니페스트 번 클릭이 로그인 -> 저장 및 빌드


6

Visual Studio에서 프로젝트 "속성"으로 이동하십시오. 그런 다음 서명 탭으로 이동하십시오.

그런 다음 Click Once 매니페스트 서명이 해제되어 있는지 확인하십시오.

또는

1. 메모장에서 .csproj 파일을 엽니 다.

인증서 저장소 xxxxx xxxxxx xxxxxxxx.pfx에서 인증서 서명과 관련된 다음 정보를 삭제합니다.

나를 위해 일했다.


3

프로젝트를 복사 한 시스템의 창에서 생성 한 개인 인증서라고 가정하면 프로젝트가있는 시스템의 인증서 관리자를 사용하여 인증서를 가져올 수 있습니다. 인증서 관리자 (certmgr)를 시작하고 개인 인증서를 선택한 다음 기존 인증서 목록 아래를 마우스 오른쪽 단추로 클릭하고 태스크에서 가져 오기를 선택하십시오. 찾아보기를 사용하여 프로젝트에서 .pfx (프로젝트와 함께 복사 한 이전 시스템의 .pfx)를 찾으십시오. 프로젝트 디렉토리와 이름이 같은 서브 디렉토리에 있어야합니다. C #과 VS에 익숙하므로 환경이 아닌 경우 .pfx가 다른 곳에 있거나이 제안 사항이 적용되지 않을 수 있습니다. 가져온 후 상태 메시지가 나타납니다. 성공하면 컴파일 인증서 오류가 사라져야합니다.certmgr 화면


명확하고 간결합니다!
Guido Leenders

0

Windows 인증서 저장소에 키를 수동으로 추가하는 것만으로는 충분하지 않습니다. 인증서에는 서명 된 공개 키만 포함됩니다. 인증서의 공개 키와 연관된 개인 키 도 가져와야합니다 . .pfx 파일은 단일 파일에 공개 키와 개인 키를 모두 포함합니다. 가져 오기가 필요합니다.


고맙지 만 이미 시도했습니다. 어쨌든 새 인증서를 만들면 Visual Studio에서 인증서를 자동으로 추가해야합니다. 그러나 .pfx 파일을 수동으로 추가하려고 시도했습니다. 올바른 인증서 저장소에 설치하고 개인 저장소에도 추가 할 수 있도록 창을 남겼습니다.
Marcus

개인 키는 인증서 저장소에 저장되지 않습니다. 이 읽어주십시오, 어쩌면 당신이 차이 이해하는 데 도움이됩니다 technet.microsoft.com/en-us/library/cc962112.aspx
오웬 Wengerd

인증서 관리자에서 인증서 속성 창을 열어서 연관된 개인 키가 사용 가능한지 확인할 수 있음을 추가해야합니다. 개인 키를 사용할 수있는 경우 일반 페이지 맨 아래에 "이 인증서에 해당하는 개인 키가 있습니다"라는 텍스트가 표시됩니다. 해당 텍스트가 보이지 않으면 개인 키가 설치되지 않은 것입니다.
Owen Wengerd

예, "이 인증서에 해당하는 개인 키가 있습니다"라고 표시되어 있습니다.
Marcus

열쇠 또는 ​​인증서를 문제로 배제한다고 생각합니다.
Owen Wengerd

0

다른 컴퓨터에서 파일을 복사했다고합니다. 복사 한 후 '차단 해제'했습니까? 특히 .snk 파일을 검사하여 안전하지 않은 것으로 표시되어 있지 않은지 확인해야합니다.


차단되지 않았으며 Windows Live Mesh 동기화 소프트웨어에서 제공되었습니다. 그러나 랩톱의 Visual Studio에서 새 키를 생성해도 작동하지 않으므로 관련이 없습니다.
Marcus

0

속성을 사용하여 강력한 이름으로 어셈블리에 서명하려면

열기 AssemblyInfo.cs(에서 $(SolutionDir)\Properties)

AssemblyKeyFileAttribute하거나 AssemblyKeyNameAttribute, 강력한 이름으로 어셈블리에 서명 할 때 사용하는 키 쌍을 포함하는 파일 또는 컨테이너의 이름을 지정.

다음 코드를 추가하십시오.

[assembly:AssemblyKeyFileAttribute("keyfile.snk")]

이 줄을 추가해도 차이가 없지만 여전히 같은 오류가 발생합니다.
Marcus

0

프로젝트 또는 솔루션을 로컬로 빌드 해야하는 경우 다른 사람들이 제안한 것처럼 서명을 제거하는 것은 죽은 간단한 솔루션 일 수 있습니다.

그러나 배포 또는 배포를 위해 실제 릴리스 조각을 빌드하는 TeamCity와 같은 자동화 빌드 서버 에이 오류가있는 경우이 인증서를 빌드 시스템의 인증서 저장소에 올바르게 설치하는 방법을 고려할 수 있습니다. 빌드 종료시 서명 된 패키지

일반적으로 PFX 인증서를 소스 제어로 체크인 / 커밋하는 것은 권장되지 않으므로 빌드 프로세스 중에 빌드 서버에서이 파일을 가져 오는 방법은 약간 다른 질문이지만 때로는 사람들이 솔루션과 함께이 파일을 저장하는 경우도 있습니다. 코드, 프로젝트 폴더에서 찾을 수 있습니다.

이 인증서를 빌드 서버의 적절한 계정으로 설치하기 만하면 됩니다.

  1. Windows Sysinternals에서 PsExec을 다운로드하십시오 .

  2. 명령 프롬프트를 열고 다음을 입력하십시오. TeamCity가 기본 로컬 시스템 계정으로 실행되고 있다고 가정하면 로컬 시스템으로 실행되는 새 명령 프롬프트가 생성 됩니다.

    > psexec.exe -i -s cmd.exe

  3. 이 새 명령 프롬프트에서 인증서가 포함 된 디렉토리로 변경하고 설치할 파일 이름을 입력하십시오 (파일 이름을 사용자 이름으로 변경).

    > mykey.pfx

  4. 인증서 가져 오기 마법사가 시작됩니다. 클릭하여 제안 된 모든 기본값을 선택하십시오.

  5. 빌드를 실행하십시오.

모든 크레딧 간다 스튜어트 노블 (에 추가로 다음과 로랑 켐프 나는 ☺ 믿는다).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.