Kami baru saja meningkatkan proyek Visual Studio 2008 ke Visual Studio 2010. Semua majelis kami ditandatangani dengan kuat menggunakan sertifikat penandatanganan kode Verisign . Sejak peningkatan, kami terus mendapatkan kesalahan berikut:
Tidak dapat mengimpor file kunci berikut: companyname.pfx. File kunci mungkin dilindungi kata sandi. Untuk memperbaikinya, coba impor sertifikat lagi atau instal sertifikat secara manual ke Strong Name CSP dengan nama wadah kunci berikut: VS_KEY_3E185446540E7F7A
Ini terjadi pada beberapa mesin pengembang dan bukan yang lain. Beberapa metode yang digunakan untuk memperbaiki ini yang berfungsi beberapa waktu termasuk:
- Instal ulang file kunci dari Windows Explorer (klik kanan pada file PFX dan klik Instal)
- Menginstal Visual Studio 2010 pada mesin baru untuk pertama kalinya meminta Anda untuk kata sandi saat pertama kali Anda membuka proyek, dan kemudian berhasil. Pada mesin yang ditingkatkan dari Visual Studio 2008, Anda tidak mendapatkan opsi ini.
Saya sudah mencoba menggunakan utilitas SN.EXE (Strong Name Tool) untuk mendaftarkan kunci dengan Strong Name CSP seperti pesan kesalahan yang disarankan, tetapi setiap kali saya menjalankan alat dengan opsi apa pun menggunakan versi yang datang dengan Visual Studio 2010, SN .EXE hanya mencantumkan argumen baris perintahnya alih-alih melakukan apa pun. Ini terjadi terlepas dari argumen apa yang saya berikan.
Mengapa ini terjadi, dan langkah apa yang jelas untuk memperbaikinya? Saya akan menyerah pada pemasangan ClickOnce dan penandatanganan kode Microsoft.
Saya telah menemukan perbaikan yang membantu Anda dapat membangun dengan sukses di lingkungan multi pengembang:
Alih-alih mengubah password (yang menyebabkan .pfx yang akan diubah), memilih ulang file .pfx dari combobox. Ini kemudian memanggil dialog kata sandi. Setelah memasukkan kata sandi, proyek akan membangun OK. Setiap dev dapat melakukan ini pada mesin lokalnya tanpa benar-benar memodifikasi file .pfx.
Saya masih mengalami masalah saat membuat rakitan ditandatangani di mesin server build kami. Saya mendapatkan kesalahan yang sama di sana, namun menggunakan metode sn.exe -i tidak memperbaiki masalah untuk buildserver.
sumber
Saya memiliki masalah yang sama dan menghapus toko dan membaca tidak berhasil. Saya harus melakukan yang berikut.
Dapatkan salinan OpenSSL . Ini tersedia untuk Windows . Atau gunakan kotak Linux karena mereka semua memiliki semuanya.
Jalankan yang berikut ini untuk mengekspor ke file kunci:
Kemudian di properti proyek Anda dapat menggunakan file PFX.
sumber
Saya berbicara terlalu cepat! Rebuild mengembalikan kesalahan ...
Saya menemukan ini berfungsi - klik kanan di Solution Explorer dan kecualikan dari proyek. Klik Tampilkan semua file , klik kanan dan sekarang sertakan lagi dalam proyek. Sekarang batalkan perubahan yang tertunda ...
Untuk beberapa alasan ini diselesaikan untuk saya dan relatif tidak menyakitkan!
sumber
Saya menemukan bahwa dalam beberapa kasus Anda harus mencoba untuk menghapus kunci ini sebelum Anda menginstalnya. Jadi lakukan hal berikut:
sn -d VS_XXXX
sn -i mykey.pfx VS_XXX
sumber
VSCommands 2010 (plugin untuk Visual Studio) dapat memperbaikinya untuk Anda secara otomatis - cukup klik kanan pada kesalahan dan klik Terapkan Perbaikan dari menu. Anda bisa mendapatkannya dari galeri Visual Studio .
sumber
Setelah mencoba semua solusi ini (dan banyak lagi), saya menemukan bahwa masalahnya ada di tempat lain. Bagi orang-orang yang mengalami kesengsaraan yang sama dengan saya setelah membeli sertifikat, saya akan membagikan solusi untuk masalah saya.
Tingkah laku
Saya mengerti bahwa 'tanda' menggunakan nama yang kuat dan bukan kode asli ke DLL atau EXE. Inilah mengapa signtool akan berfungsi dalam kasus ini, tetapi 'tanda' di Visual studio tidak akan berfungsi.
Alasan
Di masa lalu saya pernah memiliki pengalaman dengan sertifikat dari Verisign. Mereka punya
KeySpec=2
sertifikat - yang digunakan dengan fungsionalitas 'tanda' di Visual Studio. Sertifikat ini berfungsi dengan baik untuk Visual Studio dan signtool.Saya sekarang membeli sertifikat dari Comodo, yang salah
KeySpec=1
dalam sertifikat penandatanganan kode. Itu berarti sertifikat ini berfungsi baik dengan signtool (authenticode) tetapi tidak dengan penamaan yang kuat (drop-down sign).Larutan
Ada dua cara untuk mengatasi masalah ini:
sn -k [name].snk
. Tandatangani perakitan menggunakan snk dan kemudian gunakan signtool dengan sertifikat penandatanganan kode Anda untuk menandatangani DLL / EXE dengan tanda tangan authenticode. Walaupun ini tampak aneh, dari apa yang saya pahami ini adalah cara yang benar untuk menangani sertifikat, karena nama yang kuat memiliki tujuan yang berbeda dari authenticode (lihat juga tautan ini untuk perincian tentang cara kerjanya).KeySpec=2
. Prosedur untuk ini dirinci di sini .Karena saya ingin menggunakan beberapa nama yang kuat, saya saat ini menggunakan opsi (1), walaupun opsi (2) juga berfungsi.
Untuk memastikan solusi ini tidak akan pernah hilang di masa mendatang, inilah prosedur solusi 2:
KeySpec=1
) ke file PFX. Catatan: Harap cadangkan file ini ke lokasi yang aman dan uji apakah file tersebut dapat diimpor dengan benar di komputer lain jika Anda benar-benar ingin memainkannya dengan aman!certutil -importPFX -user <pfxfilename> AT_SIGNATURE
Anda sekarang harus memiliki set kunci / sertifikat dengan
KeySpec=2
. Jika perlu, Anda sekarang dapat mengekspor ini ke file PFX lain menggunakan MMC lagi.sumber
Untuk mengatasi masalah ini di Visual Studio 2012, saya klik kanan proyek, properti -> "penandatanganan", dan kemudian hapus centang pada "Masuk manifes ClickOnce".
sumber
Saya memilih ulang file Key (pfx) di kotak drop-down "Choose a Strong Name Key File", Kemudian berikan kata sandi di Jendela Popup "ENTER PASSWORD". Menyelamatkan proyek saya dan berhasil membangun kembali .build berhasil.
Simpan proyek Anda dan lakukan pembangunan kembali.
Jika menerima pesan kesalahan: "Suatu usaha dilakukan untuk merujuk token yang tidak ada" abaikan saja dan Lanjutkan langkah-langkah di bawah ini
Klik tombol 'Ubah Kata Sandi ”:
Masukkan kata sandi asli di ketiga kotak dan klik OK. Jika Anda ingin mengubah kata sandi Anda (atau jika kata sandi lama Anda tidak memenuhi persyaratan kompleksitas), Anda dapat melakukannya sekarang.
Simpan proyek Anda dan lakukan pembangunan kembali.
Info lebih lanjut..
sumber
Sebagai solusinya, saya mencoba menjalankan Visual Studio 2010 sebagai administrator, dan itu berhasil untuk saya.
Saya harap ini membantu.
sumber
Sebagai penulis asli dari karya di sekitar pada laporan bug hubungkan, ada DUA varian dari pesan ini (saya telah menemukan nanti)
Untuk satu varian Anda menggunakan sn.exe (biasanya jika Anda melakukan penamaan yang kuat) untuk mengimpor kunci ke toko penamaan yang kuat.
Varian lain yang Anda gunakan untuk mengimpor certmgr adalah ketika Anda mendaftar kode untuk hal-hal seperti penyebaran klik-sekali (perhatikan Anda dapat menggunakan sertifikat yang sama untuk kedua tujuan).
Semoga ini membantu.
sumber
Tidak ada yang berhasil untuk saya, tetapi kemudian saya pergi dan melihat ke manajer sertifikat (mmc.exe). Sertifikat tidak diimpor di toko pribadi, jadi saya mengimpornya secara manual dan kemudian proyek dikompilasi.
Lihat ClickOnce Manifest Signing dan Signing Strong-Name Signing Menggunakan Halaman Penandatanganan Desainer Visual Studio Project, Signing Assemblies .
sumber
Memilih kembali file kunci dalam kotak kombo dan memasukkan kata sandi membantu kami.
Tetapi perlu dilakukan setiap kali file kunci berubah dan sepertinya tidak OK.
sumber
Saya memiliki masalah yang sama setelah memindahkan instalasi Windows saya ke SSD . Tidak ada solusi lain yang bekerja untuk saya.
Solusi saya adalah membuka file proyek di Notepad dan menghapus semua referensi kunci PFX. Setelah file disimpan, buka solusi di Visual Studio. Pergi ke project -> Properties -> Signing. Anda tidak akan melihat kunci apa pun yang tercantum dalam kotak kombo 'pilih file kunci nama yang kuat'. Di kotak kombo, telusuri kunci, pilih dan proyek Anda sekarang dapat dibangun.
sumber
Masalah saya adalah bahwa TFS Build Controller berjalan sebagai layanan jaringan dan untuk beberapa alasan saya tidak mengerti mengapa sertifikat layanan Visual Studio Build Host tidak digunakan. Saya mengubah identitas layanan Visual Studio Build menjadi sesuatu yang lebih mudah dikelola, memastikan itu memiliki hak di server TFS, dan secara manual menambahkan sertifikat menggunakan MMC.
Masalahnya juga bahwa MSBuild tidak dapat menambahkan sertifikat yang dilindungi kata sandi ke toko.
sumber
Saya memiliki masalah yang serupa, tetapi setelah memilih pfx dalam ComboBox "Mengetik nama kunci file" dan mengetik kata sandi, saya masih mengalami kesalahan yang sama (tanpa bagian nama wadah):
Juga, panel informasi sertifikat "Tandatangani ClickOnce manifes" tidak diisi.
Saya melakukan "Pilih dari File ..." pada pfx saya, dan itu memecahkan masalah.
sumber
Semua metode yang dijelaskan di sini tidak membantu saya. Tetapi ketika saya menghapus file * .pfx dari proyek saya dan menambahkannya ke penandatanganan majelis lagi, saya membangun proyek saya tanpa kesalahan! Saya tidak bisa menjelaskan alasannya. Tetapi itu berhasil bagi saya.
sumber
Oke, ini berhasil untuk saya. Buka solusi / proyek lama sebagai administrator di Visual Studio 2010 dan buka solusi / proyek baru atau disalin. Sebagai administrator, hapus file pfk yang disalin dalam solusi / proyek Visual Studio 2010 yang baru dan buka properti proyek dan batalkan pilihan.
Dengan kedua proyek terbuka, salin tempel ke yang baru. Buka properti proyek dan pilih Bangun. Saya membuka dan menutup Visual Studio dan juga setelah menghapus dari proyek baru yang dibangun sebelum menyalinnya dari proyek lama dan memilihnya. Saya menerima kesalahan pada awal posting ini pertama kali ketika saya menyalin proyek dan mencoba membangunnya.
sumber
Dalam skenario saya, layanan build tidak menggunakan akun pengguna yang sama dengan yang saya impor menggunakan kunci
sn.exe
.Setelah mengubah akun menjadi akun administrator saya, semuanya berfungsi dengan baik.
sumber
Ini Memecahkan masalah saya: Buka Proyek VS Anda
Klik dua kali pada Package.appxmanifest
Buka tab Kemasan
klik pilih sertifikat
klik konfigurasikan sertifikat
pilih dari file dan gunakan example.pfx bahwa persatuan atau apa pun yang dibuat
sumber
Saya memecahkan masalah ini sendiri dengan mengubah baris berikut dalam file .csproj proyek Visual Studio proyek:
Ini melempar kesalahan 'tidak dapat mengimpor':
Mengubah nilai menjadi false membuat kesalahan hilang.
sumber
Saya mendapat kesalahan yang sama. Dalam kasus saya, saya mencoba semua hal di atas, tetapi saya tidak bisa mendapatkan hasilnya.
Saya akhirnya menyadari bahwa dalam kasus saya, alasan kesalahannya adalah kata sandi sertifikat tidak dimasukkan atau dimasukkan secara salah. Kesalahan hilang ketika saya memasukkan kata sandi secara dinamis dengan benar. berhasil
sumber
Sayangnya, tidak ada pendekatan yang disebutkan di sini yang bekerja untuk saya. Saya harus mendaftarkan pasangan PFX dalam wadah buruh pelabuhan dan saya harus memasukkan kata sandi melalui baris perintah.
Jadi saya mengembangkan kembali
sn.exe -i <infile> <container>
perintah dalam C # menggunakan RSACryptoServiceProvider . Sumber dan aplikasinya ada di GitHub di SnInstallPfx proyek .The SnInstallPfx app menerima kunci PFX dan password. Itu menghitung nama kontainer kunci (VS_KEY_ *) secara otomatis (dipinjam dari kode sumber MSBuild) dan menginstalnya ke CSP nama kuat.
Pemakaian:
sumber
Untuk siapa yang menggunakan pelari GitLab:
./gitlab-runner.exe install --user ".\ENTER-YOUR-USERNAME" --password "ENTER-YOUR-PASSWORD"
(Saya harus berhenti dan mencopot dulu)sn -i certificate.pfx VS_KEY_C***6
nama kontainer disarankan dalam output Pekerjaan yang gagal di GitLab (output msbuild)
sumber