“Sertifika deposunda bildirim imzalama sertifikası bulunamıyor” - yeni anahtar eklendiğinde bile


153

Güçlü bir isim anahtarı imzası olan projeler inşa edemiyorum - başlıktaki mesaj her zaman ortaya çıkıyor.

Evet, proje başlangıçta başka bir makineden kopyalandı. Ancak, Proje Özellikleri'ndeki İmzalama sekmesi aracılığıyla yeni bir anahtar eklesem bile, bu hata gösterilmeye devam eder.

Visual Studio'yu Yönetici olarak çalıştırmayı denedim ve anahtarları Windows Sertifika Deposu'na el ile eklemeyi denedim.

Yardım!

Düzenleme: Yeni bir proje ile bu hatayı almıyorum, ama bu mevcut projenin çalışmasını oldukça istiyorum. Yeni bir sertifika oluştursam bile çalışmaz!


3
Ne tür bir VS projesi? Proje Özellikleri İmzalama Sekmesindeki "ClickOnce bildirimlerini imzala" seçeneğinin işaretini kaldırdınız mı?
Simon Mourier

@Simon Mourier, bu seçeneğin işaretini kaldırırsam dosya imzalanmaz. İmzalanmasını istiyorum! Bu bir C # projesi. Ana geliştirme makinemde iyi çalışıyor, sadece dizüstü bilgisayarda değil.
Marcus

Hata iletisi derleme günlüğünüzde mi yoksa başka bir şekilde mi görüntüleniyor? Günlüğü kopyalayıp yapıştırmanız yardımcı olabilir.
Owen Wengerd

Derleme günlüğünde bir hata: “Sertifika deposunda bildirim imzalama sertifikası bulunamadı”
Marcus

Kabul edilen cevapta kod satırlarını görmedim. Ama bu benim için çalıştı: VS2015'te yeni bir anahtar oluşturdum. Meclisi İmzala'nın işaretini kaldırdım ve kurtardım. Sonra Dosyadan Seç düğmesini tıkladım, az önce oluşturduğum dosyayı seçtim, Montajı imzala üzerine tekrar tıkladım ve kaydettim. Yeniden inşa ettiler.
Tim

Yanıtlar:


234

Sonunda çözümü buldum ve umarım bu başka birine de yardımcı olur.

  1. Söz .csprojkonusu proje için dosyayı düzenleyin.
  2. Aşağıdaki kod satırlarını silin:

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

1
Benim için de çalıştı. Böyle bir eylemin uyarısı var mı?
Doktor Kodlayıcı

1
Evet, "Manifest" ile bir şey sildi ve işe yaradı :-)
s1cart3r

2
Yankıları bilmeden bunu yapmazdım ... yine de yapar
barnacle.m

Benim durumumda, sorunu silme ManifestCertificateThumbprintve ManifestKeyFileçözme.
Ahmed Shamel

Benim için çalıştı. Bunun yankılarının ne olduğuna dair bir ipucu yok ama en azından biri çalışan bir proje, bu yüzden bu benim için yeterince iyi.
Parrotmaster

148

Görsel stüdyo içinde projenizin "Özellikler" bölümüne gidin. Ardından imzalama sekmesine gidin.

Ardından, Bir Kez Tıklama bildirimlerini imzala seçeneğinin kapalı olduğundan emin olun.


Güncellenmiş Talimatlar:

Çözüm Gezgini içinde:

  1. projeni sağ tıkla
  2. mülklere tıklayın
  3. genellikle sol taraftaki "İmzalama" sekmesini seçin
  4. ClickOnce manifestolarını imzala
  5. Kaydettiğinizden emin olun!

resim açıklamasını buraya girin


2
Söyledikleriniz gayet iyi ve işe yaramalı ama işe yaramadı. Sonunda, aşağıdaki cevapta belirtildiği gibi kod satırlarını silmek zorunda kaldım
Hamid Shahid

1
Bu ne anlama geliyor / bu eylem ne anlama geliyor?
LazerSharks

@TrailMix Yapılandırma dosyanızı uygun şekilde değiştirir.
ADL

1
Bu bana vs2010 :) için bir çözüm verdi!
jace

1
Güzel cevap! VS2012 kullanıyorum ve gerçekten işe yarıyor! +1
kiLLua

15

Basit!!

Bu adımları aşağıdaki adımları izleyerek çözdüm:

  1. Proje özelliklerini aç img
  2. İmzalama Sekmesini tıklayın
  3. "Montajı imzala" nın işaretini kaldırın

Bu kadar!!


13
  1. .Csproj dosyasını Not Defteri'nde açın.
  2. Sertifika deposunda sertifika imzalama ile ilgili aşağıdaki bilgileri silin

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

11

Bu deneyin: projenizde Sağ tıklayın -> Git için özellikler -> tıkla imzalama > - Ekranın sol tarafı işaretini kaldırın tezahür ettiğinde tıklama İşaret -> Kaydet ve Yapı


6

Görsel stüdyo içerisinde "Properties" projelerinize gidin. Ardından imzalama sekmesine gidin.

Ardından, Bir Kez Tıklama bildirimlerini imzala seçeneğinin kapalı olduğundan emin olun.

VEYA

Not Defteri'nde .csproj dosyasını açın.

2. sertifika deposunda sertifika imzalama ile ilgili aşağıdaki bilgileri silin xxxxx xxxxxx xxxxxxxx.pfx true false `

Benim için çalıştı.


3

Bunun, projenizi kopyaladığınız sistemde pencereler tarafından oluşturulan kişisel bir sertifika olduğunu varsayarsak, projenin şu anda bulunduğu sistemdeki sertifika yöneticisini kullanabilir ve sertifikayı alabilirsiniz. Sertifika yöneticisini (certmgr) başlatın ve kişisel sertifikaları seçin, ardından mevcut sertifikalar listesinin altına sağ tıklayın ve görevlerden içe aktar'ı seçin. Projede .pfx dosyasını (projeyle kopyaladığınız önceki sistemden .pfx) bulmak için gözatmayı kullanın. Proje diziniyle aynı ada sahip alt dizinde olmalıdır. Ben C # ve VS aşina, bu yüzden bu sizin ortamınız olmayabilir .pfx başka bir yerde olacak veya belki bu öneri geçerli değildir. İçe aktarma işleminden sonra bir durum mesajı almalısınız. Başarılı olursanız, derleme sertifikası hatası giderilmiş olmalıdır.certmgr ekran


Açık ve özlü!
Guido Leenders

0

Windows sertifika deposuna el ile anahtar eklemek yeterli değildir. Sertifika yalnızca imzalı ortak anahtarı içerir. Sertifikadaki ortak anahtarla ilişkilendirilmiş özel anahtarı da almanız gerekir . Bir .pfx dosyası tek bir dosyada hem genel hem de özel anahtarlar içerir. İçe aktarmanız gereken şey budur.


Teşekkürler ama zaten denedim. Yine de yeni bir tane oluşturduğunuzda, Visual Studio sertifikayı otomatik olarak eklemelidir. Ancak .pfx dosyasını el ile de eklemeyi denedim. Pencereleri doğru sertifika deposuna yüklemek için sol pencerelerden çıkıp kişisel mağazama da ekledim.
Marcus

Özel anahtar sertifika deposunda depolanmaz. : Lütfen bunu okuyun, belki de sen ayrımı anlamanıza yardımcı olacaktır technet.microsoft.com/en-us/library/cc962112.aspx
Owen Wengerd

Sertifika yöneticisinde sertifika özellik penceresini açarak ilişkili özel anahtarın kullanılabilir olduğunu doğrulayabileceğinizi eklemeliyim. Özel anahtar varsa, Genel sayfasının altında şu metin görüntülenir: "Bu sertifikaya karşılık gelen özel bir anahtarınız var". Bu metni görmüyorsanız, özel anahtar yüklü değildir.
Owen Wengerd

Evet, "Bu sertifikaya karşılık gelen özel bir anahtarınız var" yazıyor.
Marcus

Bence bu sorun anahtarı ya da sertifikayı dışlıyor.
Owen Wengerd

0

Başka bir bilgisayardan dosya kopyaladığınızı söylediniz. Onları kopyaladıktan sonra, 'Engellemeyi kaldırdın' mı? Özellikle .snk dosyasının güvenli olmayan olarak işaretlenmediğinden emin olmak için denetlenmesi gerekir.


Engellenmedi, Windows Live Mesh senkronizasyon yazılımından geldi. Bununla birlikte, dizüstü bilgisayarda Visual Studio'da yeni bir anahtar oluşturmak bile işe yaramayacağından önemsizdir.
Marcus

0

Nitelikleri kullanarak güçlü bir adla bir montajı imzalamak için

Açık AssemblyInfo.cs(içinde$(SolutionDir)\Properties )

AssemblyKeyFileAttributeveyaAssemblyKeyNameAttribute , bir derleme kesin adı ile oturum sırasında kullanımı için anahtar çiftini içeren bir dosya ya da kabın adı belirterek.

aşağıdaki kodu ekleyin:

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

Bu satırı eklemek bir fark yaratmıyor, yine de aynı hatayı alıyorum.
Marcus

0

Projeyi veya çözümü yerel olarak oluşturmanız gerekiyorsa , imzalamayı kaldırmak diğerlerinin önerdiği gibi basit bir çözüm olabilir.

Ancak, dağıtım veya dağıtım için gerçek yayın parçalarınızı oluşturduğunuz TeamCity gibi otomasyon oluşturma sunucunuzda bu hatayla karşılaşırsanız, bu sertifikayı yapı makinesindeki sertifika deposuna düzgün bir şekilde nasıl yükleyebileceğinizi düşünebilirsiniz. yapının sonunda imzalı paketler.

Genellikle herhangi bir PFX'in check-in / taahhüt edilmesi önerilmez. sertifikasının kaynak kontrolüne , bu nedenle derleme işlemi sırasında bu dosyaları derleme sunucunuza nasıl alacağınız başka bir sorudur, ancak bazen insanlar bu dosyayı çözümle birlikte depolar kod, böylece proje klasöründe bulabilirsiniz.

Tek yapmanız gereken, bu sertifikayı derleme sunucunuzda uygun hesap altında kurmaktır.

  1. PsExec'i Windows Sysinternals'dan indirin .

  2. Bir komut istemi açın ve aşağıdakileri girin. Yerel Sistem olarak çalışan yeni bir komut istemi oluşturur (TeamCity'nizin varsayılan Yerel Sistem hesabı altında çalıştığı varsayılarak):

    > psexec.exe -i -s cmd.exe

  3. Bu yeni komut isteminde sertifikayı içeren dizine geçin ve yüklenecek dosya adını girin (dosyanın adını kendiniz olarak değiştirin):

    > mykey.pfx

  4. Sertifika Alma sihirbazı başlatılır. Tıklayın ve önerilen tüm varsayılanları seçin.

  5. Yapıyı çalıştırın.

Tüm krediler Stuart Noble'a gidiyor (ve sonra Laurent Kempé'ye inanıyorum ☺).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.