“Tidak dapat menemukan sertifikat penandatanganan nyata di toko sertifikat” - bahkan ketika menambahkan kunci baru

153

Saya tidak dapat membangun proyek dengan penandatanganan kunci nama yang kuat - pesan dalam judul selalu muncul.

Ya, proyek awalnya disalin dari komputer lain. Namun bahkan jika saya menambahkan kunci baru melalui tab Penandatanganan di Properti Proyek, kesalahan ini masih ditampilkan.

Saya telah mencoba menjalankan Visual Studio sebagai Administrator dan telah mencoba menambahkan kunci secara manual ke Windows Certificate Store.

Tolong!

Sunting: Saya tidak mendapatkan kesalahan ini dengan proyek baru, tapi saya cukup ingin agar proyek yang ada ini berfungsi. Itu tidak akan berfungsi bahkan jika saya membuat sertifikat baru!

Marcus
sumber
3
Apa jenis proyek VS? Sudahkah Anda menghapus centang pada "Sign the ClickOnce manifests" pada Project Signing Tab juga?
Simon Mourier
@Simon Mourier, jika saya hapus centang opsi itu maka file tidak akan ditandatangani. Saya ingin ditandatangani! Ini adalah proyek C #. Bekerja dengan baik pada mesin pengembangan utama saya, hanya saja tidak pada laptop.
Marcus
Apakah pesan kesalahan ditampilkan di build log Anda, atau dengan cara lain? Mungkin membantu jika Anda menyalin dan menempelkan log.
Owen Wengerd
Kesalahan dalam log pembangunan: "Tidak dapat menemukan sertifikat penandatanganan nyata di toko sertifikat"
Marcus
Saya tidak melihat baris kode dalam jawaban yang diterima. Tetapi ini berhasil bagi saya: Saya membuat kunci baru di VS2015. Saya menghapus Tanda tangan Majelis dan menyimpan. Lalu saya mengklik tombol Select from File, pilih file yang baru saja saya buat, klik lagi pada Sign the assembly, dan simpan. Dibangun kembali.
Tim

Jawaban:

234

Saya akhirnya menemukan solusinya dan sangat berharap ini membantu orang lain juga.

  1. Edit .csprojfile untuk proyek yang dimaksud.
  2. Hapus baris kode berikut:

    <PropertyGroup>
       <ManifestCertificateThumbprint>...........</ManifestCertificateThumbprint>
    </PropertyGroup>
    <PropertyGroup>
       <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile>
    </PropertyGroup>
    <PropertyGroup>
       <GenerateManifests>true</GenerateManifests>
    </PropertyGroup>
    <PropertyGroup>
       <SignManifests>false</SignManifests>
    </PropertyGroup>
    
Marcus
sumber
1
Bekerja untuk saya juga. Adakah peringatan dari tindakan semacam itu?
Dokter Coder
1
Yup, menghapus apa pun dengan "Manifest" dan berhasil :-)
s1cart3r
2
Saya tidak akan melakukan ini tanpa mengetahui dampaknya ... tetap melakukannya
barnacle.m
Dalam kasus saya, Menghapus ManifestCertificateThumbprintdan ManifestKeyFilemenyelesaikan masalah.
Ahmed Shamel
Bekerja untukku. Tidak tahu apa akibat dari ini, tetapi setidaknya salah satu dari mereka adalah proyek yang bekerja sehingga itu cukup baik untuk saya.
Parrotmaster
148

Buka "Properti" proyek Anda dalam studio visual. Lalu pergi ke tab penandatanganan.

Kemudian pastikan Sign the Click Once manifes dimatikan.


Petunjuk yang Diperbarui:

Di dalam Solution Explorer Anda:

  1. klik kanan pada proyek Anda
  2. klik pada properti
  3. biasanya di sisi kiri, pilih tab "Signing"
  4. centang tanda manifes ClickOnce
  5. Pastikan Anda menabung!

masukkan deskripsi gambar di sini

ADL
sumber
2
Apa yang Anda katakan baik-baik saja dan harus bekerja tetapi tidak. Pada akhirnya saya harus menghapus baris kode seperti yang disebutkan dalam jawaban di bawah ini
Hamid Shahid
1
Apa artinya ini / apa artinya tindakan ini?
LazerSharks
@ Trailix Ini akan memodifikasi file konfigurasi Anda dengan tepat.
ADL
1
ini memberi saya solusi untuk vs2010 :)!
Jace
1
Jawaban bagus! Saya menggunakan VS2012 dan itu benar-benar berfungsi! +1
kiLLua
15

Itu mudah!!

Saya menyelesaikan masalah ini dengan mengikuti langkah-langkah ini:

  1. Buka properti proyek img
  2. Klik pada Signing Tab
  3. Dan hapus centang "Masuk majelis"

Itu dia!!

Amit Kadam
sumber
13
  1. Buka file .csproj di Notepad.
  2. Hapus informasi berikut yang terkait dengan menandatangani sertifikat di toko sertifikat

    <PropertyGroup>
      <ManifestCertificateThumbprint>xxxxx xxxxxx</ManifestCertificateThumbprint>
      <ManifestKeyFile>xxxxxxxx.pfx</ManifestKeyFile>
    <GenerateManifests>true</GenerateManifests>
    <SignManifests>false</SignManifests>
    </PropertyGroup>
    
Rajamohan Rajendran
sumber
11

Coba ini: Klik kanan pada proyek Anda -> Pergi ke properti -> Klik penandatanganan yang berada di sebelah kiri layar -> Hapus centang pada Sign klik sekali manifes -> Simpan & Bangun

Kamala Hanchinal
sumber
6

Buka "Properti" proyek Anda dalam studio visual. Lalu pergi ke tab penandatanganan.

Kemudian pastikan Sign the Click Once manifes dimatikan.

ATAU

1. Buka file .csproj di Notepad.

2. Hapus informasi berikut yang terkait dengan penandatanganan sertifikat di toko sertifikat xxxxx xxxxxx xxxxxxxx.pfx true false `

Bekerja untukku.

Abu
sumber
3

Dengan asumsi ini adalah sertifikat pribadi yang dibuat oleh windows pada sistem tempat Anda menyalin proyek Anda, Anda dapat menggunakan manajer sertifikat pada sistem tempat proyek sekarang dan mengimpor sertifikat. Mulai manajer sertifikat (certmgr) dan pilih sertifikat pribadi kemudian klik kanan di bawah daftar sertifikat yang ada dan pilih impor dari tugas. Gunakan browse untuk menemukan .pfx di proyek (.pfx dari sistem sebelumnya yang Anda salin dengan proyek). Itu harus di sub-direktori dengan nama yang sama dengan direktori proyek. Saya kenal dengan C # dan VS, jadi jika itu bukan lingkungan Anda, mungkin .pfx akan berada di tempat lain atau mungkin saran ini tidak berlaku. Setelah impor Anda harus mendapatkan pesan status. Jika Anda berhasil, kesalahan kompilasi sertifikat harus hilang.layar certmgr

dpminusa
sumber
Jelas dan ringkas!
Guido Leenders
0

Tidak cukup dengan menambahkan kunci secara manual ke penyimpanan sertifikat Windows. Sertifikat hanya berisi kunci publik yang ditandatangani. Anda juga harus mengimpor kunci pribadi yang terkait dengan kunci publik dalam sertifikat. File .pfx berisi kunci publik dan pribadi dalam satu file. Itulah yang perlu Anda impor.

Owen Wengerd
sumber
Terima kasih tetapi sudah mencobanya. Visual Studio seharusnya secara otomatis menambahkan sertifikat saat Anda membuat yang baru. Namun saya telah mencoba menambahkan file .pfx secara manual juga. Jendela kiri untuk menginstalnya di toko sertifikat yang benar dan juga menambahkannya ke toko pribadi saya.
Marcus
Kunci pribadi tidak disimpan di toko sertifikat. Silahkan baca ini, mungkin itu akan membantu Anda memahami perbedaan: technet.microsoft.com/en-us/library/cc962112.aspx
Owen Wengerd
Saya harus menambahkan bahwa Anda dapat memverifikasi bahwa kunci pribadi terkait tersedia dengan membuka jendela properti sertifikat di manajer sertifikat. Jika kunci pribadi tersedia, teks berikut ini ditampilkan di bagian bawah halaman Umum: "Anda memiliki kunci pribadi yang sesuai dengan sertifikat ini". Jika Anda tidak melihat teks itu, kunci pribadi tidak diinstal.
Owen Wengerd
Ya itu mengatakan "Anda memiliki kunci pribadi yang sesuai dengan sertifikat ini".
Marcus
Saya pikir itu mengesampingkan kunci atau sertifikat sebagai masalah.
Owen Wengerd
0

Anda bilang Anda menyalin file dari komputer lain. Setelah Anda menyalinnya, apakah Anda 'Buka blokir' mereka? Secara khusus file .snk harus diperiksa untuk memastikan tidak ditandai sebagai tidak aman.

Owen Wengerd
sumber
Itu tidak diblokir, itu datang dari perangkat lunak sinkronisasi Windows Live Mesh. Namun itu tidak relevan karena bahkan membuat kunci baru di dalam Visual Studio di laptop tidak akan berfungsi.
Marcus
0

Untuk menandatangani majelis dengan nama yang kuat menggunakan atribut

Buka AssemblyInfo.cs(dalam$(SolutionDir)\Properties )

yang AssemblyKeyFileAttributeatauAssemblyKeyNameAttribute , menentukan nama file atau wadah yang berisi sepasang kunci untuk digunakan saat menandatangani perakitan dengan nama yang kuat.

tambahkan kode berikut:

[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
QuangNHb
sumber
Menambahkan baris ini tidak membuat perbedaan, saya masih mendapatkan kesalahan yang sama.
Marcus
0

Jika Anda hanya perlu membangun proyek atau solusi secara lokal maka menghapus penandatanganan mungkin merupakan solusi sederhana yang mati seperti yang disarankan orang lain.

Tetapi jika Anda memiliki kesalahan ini pada server build otomasi Anda seperti TeamCity tempat Anda membuat potongan rilis aktual untuk penyebaran atau distribusi, Anda mungkin ingin mempertimbangkan bagaimana Anda bisa mendapatkan sertifikat ini diinstal dengan benar ke toko cert pada mesin build, sehingga Anda mendapatkan paket yang ditandatangani di akhir build.

Umumnya tidak disarankan untuk check-in / melakukan sertifikat PFX ke dalam kontrol sumber, jadi bagaimana Anda mendapatkan file ini di server build Anda selama proses build adalah sedikit pertanyaan lain, tetapi kadang-kadang orang memang menyimpan file ini bersama dengan solusinya. kode, sehingga Anda dapat menemukannya di folder proyek.

Yang perlu Anda lakukan hanyalah menginstal sertifikat ini di bawah akun yang benar di server build Anda.

  1. Unduh PsExec dari Windows Sysinternals .

  2. Buka prompt perintah, dan masukkan yang berikut ini. Ini akan memunculkan prompt perintah baru, berjalan sebagai Sistem Lokal (dengan anggapan bahwa TeamCity Anda berjalan di bawah akun Sistem Lokal default):

    > psexec.exe -i -s cmd.exe

  3. Di prompt perintah baru ini, ubah ke direktori yang berisi sertifikat dan masukkan nama file untuk menginstal (ubah nama file menjadi milik Anda):

    > mykey.pfx

  4. Panduan Impor Sertifikat akan mulai. Klik dan pilih semua standar yang disarankan.

  5. Jalankan build.

Semua kredit jatuh ke Stuart Noble (dan kemudian lebih jauh ke Laurent Kempé, saya percaya ☺).

Sevenate
sumber