ไม่สามารถนำเข้า keyfile 'blah.pfx' - ข้อผิดพลาด 'keyfile อาจได้รับการป้องกันด้วยรหัสผ่าน'


392

เราเพิ่งอัพเกรดโครงการ Visual Studio 2008 เป็น Visual Studio 2010 ชุดประกอบทั้งหมดของเรามีการเซ็นชื่ออย่างแน่นหนาโดยใช้ใบรับรองการลงนามรหัสVerisign ตั้งแต่การอัปเกรดเราได้รับข้อผิดพลาดต่อไปนี้อย่างต่อเนื่อง:

ไม่สามารถนำเข้าไฟล์คีย์ต่อไปนี้: companyname.pfx ไฟล์คีย์อาจได้รับการป้องกันด้วยรหัสผ่าน เมื่อต้องการแก้ไขปัญหานี้ให้ลองนำเข้าใบรับรองอีกครั้งหรือติดตั้งใบรับรองด้วยตนเองไปยังชื่อที่แข็งแกร่ง CSP ด้วยชื่อคอนเทนเนอร์คีย์ต่อไปนี้: VS_KEY_3E185446540E7F7A

สิ่งนี้เกิดขึ้นกับเครื่องผู้พัฒนาบางเครื่องและไม่ใช่เครื่องอื่น วิธีการบางอย่างที่ใช้ในการแก้ไขปัญหานี้ที่ทำงานบางครั้งรวมถึง:

  • ติดตั้งไฟล์คีย์ใหม่จาก Windows Explorer (คลิกขวาที่ไฟล์ PFX และคลิกติดตั้ง)
  • การติดตั้ง Visual Studio 2010 บนเครื่องใหม่เป็นครั้งแรกให้คุณใส่รหัสผ่านในครั้งแรกที่คุณเปิดโครงการจากนั้นจึงใช้งานได้ บนเครื่องที่อัพเกรดจาก Visual Studio 2008 คุณจะไม่ได้รับตัวเลือกนี้

ฉันได้ลองใช้ยูทิลิตี้SN.EXE (เครื่องมือชื่อที่แข็งแกร่ง) เพื่อลงทะเบียนคีย์กับ Strong Name CSP ตามที่ระบุไว้ในข้อความแสดงข้อผิดพลาด แต่เมื่อใดก็ตามที่ฉันเรียกใช้เครื่องมือด้วยตัวเลือกใด ๆ ที่ใช้รุ่นที่มาพร้อมกับ Visual Studio 2010 SN . EXE เพียงแสดงอาร์กิวเมนต์บรรทัดคำสั่งของมันแทนการทำอะไร สิ่งนี้เกิดขึ้นโดยไม่คำนึงถึงข้อโต้แย้งที่ฉันให้

ทำไมสิ่งนี้ถึงเกิดขึ้นและขั้นตอนที่ชัดเจนในการแก้ไขคืออะไร ฉันกำลังจะยอมแพ้ในการติดตั้งClickOnceและการลงชื่อรหัส Microsoft

คำตอบ:


447

ฉันพบปัญหานี้เช่นกัน ฉันสามารถแก้ไขปัญหาได้ด้วยการเรียกใช้
sn -i <KeyFile> <ContainerName>( ติดตั้งคู่คีย์ลงในคอนเทนเนอร์ที่มีชื่อ )

snมักจะติดตั้งเป็นส่วนหนึ่งของ Windows SDK C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\bin\NETFX 4.0 Tools\sn.exeเช่น เป็นไปได้ว่าที่ตั้งนี้ไม่ได้อยู่ในเส้นทางการค้นหาสำหรับสภาพแวดล้อมมาตรฐานของคุณ อย่างไรก็ตาม "พรอมต์คำสั่งสำหรับนักพัฒนา" ที่ติดตั้งโดย Visual Studio จะเพิ่มข้อมูลเพิ่มเติมที่มักจะมีตำแหน่งที่ถูกต้อง

ขึ้นอยู่กับโพสต์ของคุณที่จะมีลักษณะ

sn -i companyname.pfx VS_KEY_3E185446540E7F7A

สิ่งนี้จะต้องเรียกใช้จากตำแหน่งของไฟล์ PFX ของคุณหากคุณมีโซลูชันที่โหลดใน VS 2010 คุณสามารถคลิกขวาที่ไฟล์ pfx จาก explorer ของโซลูชันและเลือก Open Command Prompt ซึ่งจะเปิดเครื่องมือพร้อมท์. net 2010 cmd ใน ไดเรกทอรีที่ถูกต้อง

ก่อนที่จะรันคำสั่ง sn นี้ฉันได้ทำการติดตั้ง pfx อีกครั้งโดยคลิกขวาที่มันแล้วเลือกติดตั้งอย่างไรก็ตามมันไม่ทำงาน สิ่งเดียวที่ควรทราบเนื่องจากอาจเป็นการรวมกันของทั้งสองอย่างที่ให้โซลูชัน

หวังว่านี่จะช่วยแก้ปัญหาของคุณ


5
ขอบคุณแบรนดอน - ใช่สิ่งนี้เช่นการติดตั้งใหม่ของไฟล์คีย์ด้วยตนเอง "การจัดเรียง" แก้ปัญหา ปัญหาคือทันทีที่คุณตรวจสอบในไฟล์คีย์ผู้ใช้รายอื่นที่ได้รับการตรวจสอบล่าสุดในไฟล์คีย์จะพบปัญหานี้ หากผู้ใช้เหล่านั้นเช็คอิน "แก้ไข" และฉันได้รับล่าสุดแสดงว่าเครื่องของฉันเสียอีกครั้ง ... และต่อไป Microsoft ได้เริ่มต้นปัญหาตั๋วแล้วและมอบหมายให้ทีม VS2010 และทีม VSS
JasonD

2
น่าสนใจ ฉันไม่พบปัญหาเมื่อเพิ่ม pfx ไปยัง CSP ใหม่ สำหรับความรู้ของฉัน SN -i ไม่ได้เปลี่ยนไฟล์ pfx ดังนั้นคุณไม่ควรตรวจสอบอะไรหลังจากนั้น อย่างไรก็ตามหากคุณต้องเปลี่ยนไฟล์ pfx ด้วยเช่นการรีเซ็ตรหัสผ่านนั่นจะทำให้เกิดปัญหาเนื่องจากมันจะเปลี่ยนไฟล์ pfx โซลูชันของคุณสร้างด้วยไฟล์ pfx นั้นจากเครื่องอื่นหรือไม่? หากเป็นเช่นนั้นไฟล์ pfx นั้นถูกต้องก็ไม่ได้ตั้งค่าเป็น CSP ที่ถูกต้องในเครื่องของคุณที่กำลังมีปัญหาการสร้าง
แบรนดอนแมนเชสเตอร์

3
ตอนแรกฉันลองแค่ส่วน sn -i แต่มันบ่นว่ารหัสผ่านไม่ถูกต้อง (แม้ว่ามันจะถูกต้อง) ฉันลบใบรับรองติดตั้งใหม่แล้ว sn -i ... ใช้งานได้ โดยพื้นฐานแล้วยืนยันว่าสำหรับฉันนั้นจำเป็นต้องใช้ทั้งสองขั้นตอน ติดตั้งใบรับรองอีกครั้งแล้วดำเนินการคำสั่ง sn
Dodgyrabbit

1
ฉันพบทั้ง VSS และ TFS ว่าหากคุณเรียกใช้คำสั่ง sn -i มันจะไม่ทำงานเว้นแต่ว่าคุณจะได้ทำการตรวจสอบไฟล์ PFX และเมื่อคุณตรวจสอบมันจะไม่ทำงานสำหรับนักพัฒนาอื่น ๆ บนเครือข่าย ฉันจะต้องลองติดตั้งใบรับรองใหม่แล้วเรียกใช้คำสั่ง sn -i เราต้องการให้มันทำงานกับเครื่องนักพัฒนาซอฟต์แวร์ทุกเครื่องในสำนักงาน
JasonD

5
สิ่งนี้ใช้ได้สำหรับฉันเช่นกัน แต่ฉันไม่เคยทำแบบนี้มาก่อนในอดีต VS เคยเป็นป๊อปอัปและขอรหัสผ่านสำหรับแต่ละคีย์ มีการเปลี่ยนแปลงอย่างไร
Kevin Berridge

126

ฉันค้นพบการแก้ไขที่ช่วยให้คุณสามารถสร้างได้สำเร็จในสภาพแวดล้อมของนักพัฒนาที่หลากหลาย:

แทนที่จะเปลี่ยนรหัสผ่าน (ซึ่งทำให้. pfx เปลี่ยน) ให้เลือกไฟล์. pfx จาก combobox จากนั้นจะเรียกใช้กล่องโต้ตอบรหัสผ่าน หลังจากป้อนรหัสผ่านโครงการจะสร้างตกลง ผู้พัฒนาทุกคนสามารถทำสิ่งนี้บนเครื่องของเขาได้โดยไม่ต้องแก้ไขไฟล์. pfx

ฉันยังคงมีปัญหาในการรับชุดประกอบที่จะลงนามในเครื่องสร้างเซิร์ฟเวอร์ของเรา ฉันได้รับข้อผิดพลาดเดียวกันที่นั่นอย่างไรก็ตามการใช้วิธี sn.exe -i ไม่ได้ช่วยแก้ไขปัญหาสำหรับ buildserver


5
ใช้เวลาสักครู่ในการไม่สามารถทำงานกับเซิร์ฟเวอร์การสร้าง TFS ของเราได้เช่นกันฉันก็รู้ว่าฉันเข้าสู่ระบบด้วยตัวเองไม่ใช่บัญชีบริการการสร้างไม่น่าแปลกใจที่ไม่สามารถหามันได้ - doh!
Daniel Morritt

7
สิ่งนี้ควรถูกทำเครื่องหมายเป็นคำตอบเนื่องจากคำตอบที่ทำเครื่องหมายไว้ในปัจจุบันจะไม่ทำงานในสภาพแวดล้อมที่มีผู้พัฒนาหลายคน ทำได้ดี.
Daniel McQuiston

หากคุณใช้ไฟล์. pfx เดียวกันเพื่อลงนามแอสเซมบลี / โครงการหลายรายการภายในโซลูชันเดียวคุณจะต้องทำตามขั้นตอนนี้ในโครงการเดียวและจะนำไปใช้กับพวกเขาทั้งหมด ใช้งานได้ดี
Jon Comtois

1
ปัญหาของฉันคือการสร้างเซิร์ฟเวอร์ที่ทำงานภายใต้บัญชีท้องถิ่น ฉันเข้าไปในตัวเลือกและเปลี่ยนแปลง แต่ไม่ได้ตระหนักว่าฉันเปลี่ยนมันผิดจุด - ซึ่งทำให้ฉันแก้ไขปัญหาได้หลายชั่วโมงจนกระทั่งฉันตรวจสอบอีกครั้งและตระหนักถึงความผิดพลาดของฉัน!
มัฟฟินแมน

3
ขอบคุณที่ยอดเยี่ยม น่าเสียดายที่ได้เห็นสิ่งนี้ยังคงเป็นวิธีแก้ปัญหาในปี 2560
Billy Jake O'Connor

43

ฉันมีปัญหาเดียวกันและการลบร้านค้าและการอ่านไม่ได้ผล ฉันต้องทำดังต่อไปนี้

  • ได้รับสำเนาของOpenSSL มันเป็นใช้ได้สำหรับ Windows หรือใช้กล่องลินุกซ์เพราะมันมีทั้งหมด

  • รันสิ่งต่อไปนี้เพื่อส่งออกไปยังไฟล์คีย์:

    openssl pkcs12 -in certfile.pfx -out backupcertfile.key
    
    openssl pkcs12 -export -out certfiletosignwith.pfx -keysig -in backupcertfile.key
    

จากนั้นในคุณสมบัติโครงการคุณสามารถใช้ไฟล์ PFX


1
ขอบคุณ!! ฉันคิดว่ามันใช้งานได้สำหรับฉัน ฉันคว้า openssl ที่นี่: gnuwin32.sourceforge.net/packages/openssl.htm
aherrick

ฉันต้องการเพิ่มตัวเลือกในการรวมใบรับรองจริงใน pfx: openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt -keysig -keyex
Pete

ตรวจสอบให้แน่ใจว่าได้เปิด openssl ในฐานะผู้ดูแลระบบมิฉะนั้นคุณจะได้รับข้อผิดพลาด "ไม่สามารถเขียน 'random state'" ได้: ฉันยังต้องทำคำตอบของ Brandon Manchester กับ "sn -i ... " หลังจากทำ openssl สิ่ง.
ลีริชาร์ดสัน

เหมือนกันกับ คำตอบให้กับข้อผิดพลาดเมื่อใช้ Visual Studio 2010 สำหรับการประกอบการลงนาม:“มีความพยายามที่จะอ้างอิงโทเค็นที่ไม่อยู่”
Peter Mortensen

นี่เป็นทางออกเดียวซึ่งในที่สุดฉันก็ทำงาน ขอบคุณ!
Ladislav

37

ฉันพูดเร็วเกินไป! การสร้างใหม่นำข้อผิดพลาดกลับมาเล่น ...

ฉันพบว่ามันใช้งานได้ - คลิกขวาในโซลูชัน Explorerและแยกออกจากโครงการ คลิกแสดงไฟล์ทั้งหมดคลิกขวาและรวมไว้ในโครงการอีกครั้ง ยกเลิกการเปลี่ยนแปลงที่รอดำเนินการ ...

ด้วยเหตุผลบางอย่างนี้จัดเรียงออกมาสำหรับฉันและก็ค่อนข้างเจ็บปวด!


Takin 'กลับมาไม่ได้ช่วยอะไรเลย ไม่ทราบว่าจะลบ pfx ออกจากการตั้งค่าโครงการ ฉันคิดว่าคำตอบนั้นอยู่ในคำตอบของ Stefan stackoverflow.com/a/14644793/1735721
DennisWelu

คำตอบนี้ดีมาก มันใช้งานได้สำหรับฉันและมันง่ายมาก
เบ็นรูบิน

ทำงานให้ฉัน (VS2017 15.7.4) ขอบคุณสำหรับคำตอบที่ดีและรวดเร็ว
ผู้เข้าร่วมประชุม

ทำงานกับฉันใน VS2019 16.1.3 ขอบคุณ !!
JordanTDN

35

ฉันพบว่าในบางกรณีคุณควรลองลบคีย์นี้ก่อนติดตั้ง ดังนั้นทำดังต่อไปนี้:

  1. sn -d VS_XXXX
  2. sn -i mykey.pfx VS_XXX

1
นี้แก้ไขให้ฉัน! การติดตั้งด้วยตัวเองล้มเหลวกับวัตถุที่มีอยู่แล้ว
Andy

ฉันก็ลองเช่นกัน แต่ก็ไม่ได้ช่วยอะไร มีบางอย่างผิดปกติกับใบรับรองหรือไม่
Tomáš Zato - Reinstate Monica

2
ขอขอบคุณการลบจะต้องทำในฐานะผู้ดูแลระบบ - หากใช้เป็นผู้ใช้ทั่วไปคนหนึ่งจะได้รับข้อผิดพลาดที่ทำให้เข้าใจผิด "ไม่พบที่เก็บคีย์ชื่อที่แข็งแกร่ง"
# # # # # # # # # # # # # s s,

ขอบคุณมันทำงานให้ฉัน
Rikin Patel

31

VSCommands 2010 (ปลั๊กอินสำหรับ Visual Studio) สามารถแก้ไขปัญหานี้ให้คุณโดยอัตโนมัติ - เพียงคลิกขวาที่ข้อผิดพลาดและคลิกใช้แก้ไขจากเมนู คุณสามารถได้รับจาก Visual Studio แกลเลอรี่


1
ฉันเชื่อว่านี่สำหรับรุ่น Pro - ไม่มีตัวเลือกนี้ในรุ่น Lite ของฉัน
Adam Butler

2
รุ่นที่ฉันเพิ่งดาวน์โหลด (ในเดือนกันยายน 2011) มาพร้อมกับตัวเลือกนี้
จิมนับ

4
มันยังต้องใช้สิทธิ์ใช้งานระดับมืออาชีพ
John Baughman

27

หลังจากลองวิธีแก้ปัญหาทั้งหมด (และอีกมาก) ฉันพบว่าปัญหาอยู่ที่อื่น สำหรับคนที่ผ่านความทุกข์ยากเช่นเดียวกับฉันหลังจากซื้อใบรับรองฉันจะแบ่งปันวิธีแก้ปัญหาของฉัน

พฤติกรรม

ฉันเข้าใจว่า 'เครื่องหมาย' ใช้ชื่อที่รัดกุมและไม่ใช่ของแท้สำหรับ DLL หรือ EXE นี่คือเหตุผลที่ signtool จะทำงานในกรณีนี้ แต่ 'sign' ใน Visual studio จะไม่ทำงาน

เหตุผล

ในอดีตฉันเคยมีประสบการณ์เกี่ยวกับใบรับรองจาก Verisign พวกเขามีKeySpec=2ในใบรับรอง - ซึ่งใช้กับฟังก์ชั่น 'เครื่องหมาย' ใน Visual Studio ใบรับรองเหล่านี้ทำงานได้ดีสำหรับทั้ง Visual Studio และ signtool

ตอนนี้ฉันซื้อใบรับรองจาก Comodo ซึ่งมีข้อผิดพลาด KeySpec=1ใบรับรองการลงนามรหัสนั่นหมายความว่าใบรับรองเหล่านี้ทำงานได้ดีกับ signtool (authenticode) แต่ไม่ใช่ด้วยการตั้งชื่อที่รัดกุม (เครื่องหมายดรอปดาวน์)

สารละลาย

มีสองวิธีในการแก้ไขปัญหานี้:

  1. sn -k [name].snkสร้างใบรับรองแยกต่างหากสำหรับชื่อที่รัดกุมของคุณโดยใช้ เซ็นชื่อแอสเซมบลีโดยใช้ snk และหลังจากนั้นใช้ signtool ด้วยใบรับรองการเซ็นชื่อรหัสของคุณเพื่อลงนาม DLL / EXE ด้วยลายเซ็นของแท้ ในขณะนี้ดูเหมือนว่าแปลกจากสิ่งที่ฉันเข้าใจนี้เป็นวิธีที่ถูกต้องในการจัดการกับใบรับรองเพราะชื่อที่แข็งแกร่งมีวัตถุประสงค์ที่แตกต่างจาก authenticode (ดูลิงค์นี้ด้วยสำหรับรายละเอียดเกี่ยวกับวิธีการทำงาน)
  2. KeySpec=2นำเข้าใบรับรองของคุณเป็น ขั้นตอนในการนี้จะมีรายละเอียดที่นี่

เนื่องจากฉันต้องการใช้ชื่อที่รัดกุมหลายชื่อฉันจึงใช้ตัวเลือก (1) แม้ว่าตัวเลือก (2) ก็ใช้ได้เช่นกัน


เพื่อให้มั่นใจว่าโซลูชันนี้จะไม่หายไปในอนาคตนี่คือขั้นตอนการแก้ไขปัญหา 2:

  1. การใช้ "รับรอง" MMC ส่งออกชุดคีย์ที่มีอยู่ (KeySpec=1 ) ไปยังไฟล์ PFX หมายเหตุ: โปรดสำรองไฟล์นี้ไปยังตำแหน่งที่ปลอดภัยและทดสอบว่าไฟล์นั้นสามารถนำเข้าได้ในเครื่องอื่นถ้าคุณต้องการเล่นมันอย่างปลอดภัย!
  2. ลบใบรับรองที่มีอยู่ออกจาก crypto store (stlll โดยใช้ MMC)
  3. เปิดพรอมต์ CMD
  4. นำเข้าไฟล์ PFX โดยใช้คำสั่งนี้:
    1. certutil -importPFX -user <pfxfilename> AT_SIGNATURE
    2. ป้อนวลีรหัสผ่านสำหรับ pfx เมื่อพร้อมต์

ตอนนี้คุณควรจะมีชุดคีย์ / KeySpec=2ใบรับรองที่มี หากจำเป็นคุณสามารถส่งออกสิ่งนี้ไปยังไฟล์ PFX อื่นโดยใช้ MMC อีกครั้ง


โซลูชัน # 2 ของคุณเป็นสิ่งเดียวที่ใช้ได้ผลสำหรับฉัน (โดยไม่ต้องใช้เครื่องมือหรือกระบวนการบรรทัดคำสั่งรอง) ขอบคุณ
Bron Davies

1
ใช่ฉันไม่เข้าใจจริงๆว่าทำไมการแก้ปัญหาบางอย่างที่นี่มีคะแนนเสียงมากมาย นี่เป็นสิ่งเดียวที่ได้ผลสำหรับฉันและฉันค่อนข้างมั่นใจว่าคนส่วนใหญ่ที่ซื้อใบรับรอง CS ควรมีปัญหาเดียวกัน โอ้ ...
atlaste

1
นี่เป็นทางออกเดียวสำหรับฉัน นอกจากนี้ไฟล์. pfx ไม่สามารถรวมข้อมูลการผูกมัดใบรับรองสำหรับการลงนามชุดประกอบ
Shih-Wen Su

ขอบคุณสำหรับคำแนะนำอย่างละเอียด อธิบายทุกขั้นตอนอย่างแม่นยำ
Dmitriy

1
วิธีแก้ปัญหาข้อแรกของคุณมีความสำคัญอย่างยิ่งต่อการทำความเข้าใจที่นี่: ไม่จำเป็นต้องมีชุดประกอบที่ลงชื่ออย่างแน่นหนาพร้อมใบรับรองการป้องกันด้วยรหัสผ่านที่มีราคาแพง! เมื่อคุณเข้าใจสิ่งนี้และใช้ไฟล์ snk ปัญหานี้จะหายไปทั้งหมด ดูบันทึกคำเตือนที่นี่และที่นี่
พอล

11

เมื่อต้องการแก้ไขปัญหานี้ใน Visual Studio 2012 ฉันคลิกขวาที่โครงการคุณสมบัติ -> "การลงนาม" แล้วยกเลิกการเลือก "ลงชื่อเข้าใช้ ClickOnce รายการ"


2
นี่เป็นคำตอบที่สมบูรณ์แบบหากไม่จำเป็นต้องลงชื่อ มันจะลบความจำเป็นสำหรับโครงการที่จะลงนาม
Tom Anderson

8

ฉันเลือกไฟล์ Key (pfx) อีกครั้งในช่องรายการแบบเลื่อนลง "เลือกไฟล์ชื่อคีย์ที่แข็งแกร่ง" จากนั้นระบุรหัสผ่านในหน้าต่างป๊อปอัพ "ENTER PASSWORD" บันทึกโครงการของฉันและสร้างใหม่สำเร็จแล้ว

  • เปิดคุณสมบัติของโครงการ
  • คลิกที่ส่วนการลงนาม
  • ที่มันบอกว่า 'เลือกไฟล์คีย์ชื่อที่แข็งแกร่ง:' เลือกค่าปัจจุบันใหม่จากกล่องแบบหล่นลง:

ป้อนคำอธิบายรูปภาพที่นี่

  • Visual Studio จะขอให้คุณใส่รหัสผ่าน ใส่มัน

ป้อนคำอธิบายรูปภาพที่นี่

  • บันทึกโครงการของคุณและสร้างใหม่

  • หากได้รับข้อความแสดงข้อผิดพลาด:” มีความพยายามในการอ้างอิงโทเค็นที่ไม่มีอยู่” เพียงแค่ละเว้นและทำตามขั้นตอนด้านล่าง

  • คลิกปุ่ม 'เปลี่ยนรหัสผ่าน':

ป้อนคำอธิบายรูปภาพที่นี่

  • ป้อนรหัสผ่านดั้งเดิมในช่องทั้งสามแล้วคลิกตกลง หากคุณต้องการเปลี่ยนรหัสผ่าน (หรือหากรหัสผ่านเดิมของคุณไม่ตรงตามข้อกำหนดด้านความซับซ้อน) คุณสามารถทำได้ทันที

  • บันทึกโครงการของคุณและสร้างใหม่

ข้อมูลเพิ่มเติม..


3
ข้อผิดพลาดทั้งหมดนี้ดูเหมือนว่าจะเป็นการสุ่มแก้ปัญหาทั้งหมด แต่วิธีนี้ใช้ได้ผลสำหรับฉัน หากใครก็ตามที่ลงมาถึงจุดนี้ฉันสามารถแนะนำให้ลองทุกอย่างเท่านั้น
DeusExMachina25

6

ในฐานะที่เป็นวิธีแก้ปัญหาฉันพยายามใช้งาน Visual Studio 2010 ในฐานะผู้ดูแลระบบและทำงานให้ฉัน

ฉันหวังว่านี่จะช่วยได้.


ด้วยเหตุผลบางอย่างหยุดทำงาน ฉันไม่อยากจะเชื่อเลยว่านี่จะช่วยแก้ไขปัญหาได้ ขอบคุณ!!!
แกร์ฮาร์ดพาวเวลล์

4

ในฐานะผู้เขียนต้นฉบับของการทำงานในรายงานข้อผิดพลาดการเชื่อมต่อมีสองสายพันธุ์ของข้อความนี้ (ฉันได้ค้นพบในภายหลัง)

สำหรับตัวแปรหนึ่งตัวที่คุณใช้ sn.exe (โดยปกติถ้าคุณกำลังทำการตั้งชื่อที่รัดกุม) เพื่อนำเข้าคีย์ไปยังที่เก็บชื่อที่รัดกุม

ตัวแปรอื่น ๆ ที่คุณใช้ certmgr เพื่อนำเข้าคือเมื่อคุณกำหนดรหัสสำหรับสิ่งต่าง ๆ เช่นการปรับใช้คลิกครั้งเดียว (หมายเหตุคุณสามารถใช้ใบรับรองเดียวกันสำหรับทั้งสองวัตถุประสงค์)

หวังว่านี่จะช่วยได้


ใช่เราลองใช้อันนั้นด้วยการสนับสนุนของ Microsoft เช่นกันและนั่นคือวิธีการทำการนำเข้าการเซ็นชื่อรหัส ปัญหาดูเหมือนว่ารหัสผ่านใบรับรองจะหายไปในระหว่างกระบวนการเช็คอินแหล่งที่ปลอดภัย แต่นี่ไม่ใช่ปัญหาจริง ดูเหมือนว่าคุณป้อนรายละเอียดใบรับรองบน ​​Widnows 7 machine # 1 แล้วย้ายไฟล์เดียวกันนั้นไปยังเครื่องอื่นและลงทะเบียนการลงทะเบียนจะใช้งานได้ แต่บิลด์จะล้มเหลว Microsoft ยังคงมองหามันสำหรับเรา สำหรับตอนนี้เราต้องปิดการใช้งานการเซ็นรหัสและลงนามด้วยตนเองระหว่างการเปิดตัว
JasonD

3

ไม่มีอะไรทำงานให้ฉัน แต่แล้วฉันก็ไปและดูเป็นผู้จัดการใบรับรอง (mmc.exe) ใบรับรองไม่ได้ถูกนำเข้าในร้านค้าส่วนบุคคลดังนั้นฉันจึงนำเข้าด้วยตนเองจากนั้นจึงรวบรวมโครงการ

ดูที่ClickOnce การเซ็นชื่อและการลงนามแอสเซมบลีที่รัดกุมชื่อโดยใช้เพจการลงนามของ Visual Studio Project Designer ส่วนประกอบการเซ็นชื่อ


วิธีนี้ช่วยแก้ไขปัญหาสำหรับฉันเช่นกันหลังจากทำการแก้ไข SN.exe -i
CodingSamurai

2

การเลือกไฟล์คีย์ใน combobox อีกครั้งและการป้อนรหัสผ่านจะช่วยเราได้

แต่จำเป็นต้องทำทุกครั้งที่มีการเปลี่ยนแปลงไฟล์คีย์และดูเหมือนว่าจะไม่ตกลง


2

ฉันมีปัญหาเดียวกันหลังจากย้ายการติดตั้ง Windows ไปยังSSD SSDไม่มีวิธีแก้ปัญหาอื่นที่ใช้งานได้สำหรับฉัน

ทางออกของฉันคือการเปิดไฟล์โครงการใน Notepadและลบการอ้างอิงทั้งหมดไปยังคีย์ PFX เมื่อบันทึกไฟล์แล้วให้เปิดโซลูชันใน Visual Studio ไปที่โครงการ -> คุณสมบัติ -> การลงนาม คุณไม่ควรเห็นคีย์ใด ๆ ที่แสดงอยู่ในกล่องคำสั่งผสม 'เลือกไฟล์คีย์ชื่อรัดกุม' ในกล่องคำสั่งผสมเรียกดูคีย์เลือกมันและคุณสามารถสร้างโครงการของคุณได้แล้ว


2

ปัญหาของฉันคือ TFS Build Controller ทำงานเป็นบริการเครือข่ายและด้วยเหตุผลบางอย่างฉันไม่เข้าใจว่าทำไมไม่ใช้ใบรับรองบริการโฮสต์ Visual Studio Build Host ฉันเปลี่ยนข้อมูลประจำตัวของบริการ Visual Studio Build เป็นสิ่งที่จัดการได้มากขึ้นตรวจสอบให้แน่ใจว่ามีสิทธิ์ในเซิร์ฟเวอร์ TFS และเพิ่มใบรับรองด้วยตนเองโดยใช้ MMC

ปัญหาก็คือว่า MSBuild ไม่สามารถเพิ่มใบรับรองการป้องกันรหัสผ่านไปยังร้าน


คุณต้องการเพิ่มที่ร้านสาขาไหน
felickz

ฉันทำเช่นเดียวกัน (และใส่ certs ในผู้ใช้ส่วนบุคคล / รูตที่เชื่อถือได้ / ผับที่เชื่อถือได้ .. ไม่แน่ใจว่าแก้ไขแล้ว) และสามารถย้ายไปยังข้อผิดพลาด TFS ถัดไปที่ฉันมีพื้นที่ทำงานที่ขัดแย้งกันเพื่อแก้ไขว่าฉันยังมี เพื่อลบและเพิ่มตัวแทนการสร้างใหม่
felickz

2

ฉันมีปัญหาที่คล้ายกัน แต่หลังจากเลือก pfx ใน "Strong name key file" ComboBox และพิมพ์รหัสผ่านฉันยังคงมีข้อผิดพลาดที่คล้ายกัน (โดยไม่มีส่วนชื่อคอนเทนเนอร์):

ไม่สามารถนำเข้าไฟล์คีย์ต่อไปนี้: companyname.pfx ไฟล์คีย์อาจได้รับการป้องกันด้วยรหัสผ่าน หากต้องการแก้ไขให้ลองนำเข้าใบรับรองอีกครั้งหรือติดตั้งใบรับรองด้วยตนเอง

นอกจากนี้แผงข้อมูลใบรับรอง "ลงนามใน ClickOnce" ยังไม่ได้รับการเติมข้อมูล

ฉันทำ "เลือกจากไฟล์ ... " บน pfx ของฉันและมันแก้ปัญหาได้


1

วิธีการทั้งหมดที่อธิบายไว้ที่นี่ไม่ได้ช่วยฉัน แต่เมื่อฉันลบไฟล์ * .pfx ออกจากโครงการของฉันและเพิ่มลงในการลงนามของแอสเซมบลีอีกครั้งฉันสร้างโครงการด้วยไม่มีข้อผิดพลาด! ฉันไม่สามารถอธิบายเหตุผลได้ว่าทำไม แต่มันก็ได้ผลสำหรับฉัน


1

โอเคสิ่งนี้ใช้ได้กับฉัน เปิดโซลูชัน / โครงการเก่าในฐานะผู้ดูแลระบบใน Visual Studio 2010 และเปิดโซลูชัน / โครงการใหม่หรือคัดลอก ในฐานะผู้ดูแลระบบให้ลบไฟล์ pfk ที่คัดลอกในโซลูชัน / โครงการ Visual Studio 2010 ใหม่และไปที่คุณสมบัติโครงการและยกเลิกการเลือก

เมื่อเปิดทั้งสองโครงการให้คัดลอกวางไปที่ใหม่ ไปที่คุณสมบัติโครงการและเลือกสร้าง ฉันเปิดและปิด Visual Studio และหลังจากลบจากโครงการใหม่ที่สร้างขึ้นก่อนที่จะคัดลอกจากโครงการเก่าและเลือก ฉันได้รับข้อผิดพลาดเมื่อเริ่มต้นโพสต์นี้ครั้งแรกเมื่อฉันคัดลอกโครงการและพยายามสร้าง


1

ในสถานการณ์สมมติของฉันบริการสร้างไม่ได้ใช้บัญชีผู้ใช้เดียวกันกับที่ฉันนำเข้าคีย์ด้วยการใช้ sn.exeในสถานการณ์ของฉันบริการสร้างไม่ได้ใช้บัญชีผู้ใช้เดียวกันที่ผมนำเข้าที่สำคัญกับการใช้

หลังจากเปลี่ยนบัญชีเป็นบัญชีผู้ดูแลระบบของฉันทุกอย่างทำงานได้ดี


ฉันมีปัญหาเดียวกันการอ่านความคิดเห็นของคุณชี้ให้ฉันเห็นว่าฉันได้อัพเกรดเป็น windows 10 จาก windows 7 และตอนนี้ VS จำเป็นต้องเรียกใช้ในฐานะผู้ดูแลระบบ ดังนั้นจึงเรียกใช้ VS ในฐานะผู้ดูแลระบบและไม่มีปัญหา
.. ขอบคุณ

1

สิ่งนี้แก้ไขปัญหาของฉัน: เปิดโครงการ VS ของคุณ

ดับเบิลคลิกที่ Package.appxmanifest

ไปที่แท็บบรรจุภัณฑ์

คลิกเลือกใบรับรอง

คลิกกำหนดค่าใบรับรอง

เลือกจากไฟล์และใช้ example.pfx ที่เป็นเอกภาพหรืออะไรก็ได้ที่สร้างขึ้น


0

ฉันแก้ไขปัญหานี้ด้วยตัวเองโดยเปลี่ยนบรรทัดต่อไปนี้ในไฟล์. csproj ของโครงการ Visual Studio:

ข้อผิดพลาดนี้ทำให้เกิดข้อผิดพลาด 'ไม่สามารถนำเข้า':

<PropertyGroup>
<SignManifests>true</SignManifests>
</PropertyGroup>

การเปลี่ยนค่าเป็นเท็จทำให้ข้อผิดพลาดหายไป


7
โดยทั่วไปแอสเซมบลีที่มีการลงนามเพื่อวัตถุประสงค์และการลบ SignManifests จะทำให้เกิดปัญหาในการปรับใช้ในบางสภาพแวดล้อม ดังนั้นจึงไม่ใช่วิธีแก้ปัญหา
จอร์จสเมียร์นอฟ

0

ฉันได้รับข้อผิดพลาดเดียวกัน ในกรณีของฉันฉันพยายามทั้งหมดข้างต้น แต่ไม่สามารถรับผลลัพธ์ได้

ในที่สุดฉันก็รู้ว่าในกรณีของฉันสาเหตุของข้อผิดพลาดคือรหัสผ่านใบรับรองไม่ถูกป้อนหรือป้อนไม่ถูกต้อง ข้อผิดพลาดหายไปเมื่อฉันป้อนรหัสผ่านอย่างถูกต้องแบบไดนามิก ที่ประสบความสำเร็จ


0

น่าเสียดายที่ไม่มีการเอ่ยถึงที่นี่เพื่อฉัน ฉันต้องลงทะเบียน PFX คู่ใน container docker และต้องผ่านรหัสผ่าน command line

ดังนั้นผมจึง re-พัฒนา sn.exe -i <infile> <container>คำสั่งใน C # ใช้RSACryptoServiceProvider แหล่งที่มาและแอปอยู่บน GitHub ในSnInstallPfxโครงการ

SnInstallPfxแอปยอมรับคีย์ PFX และรหัสผ่านของ คำนวณชื่อคอนเทนเนอร์คีย์ (VS_KEY_ *) โดยอัตโนมัติ (ยืมจากซอร์สโค้ด MSBuild) และติดตั้งลงในชื่อรัดกุม CSP

การใช้งาน:

SnInstallPfx.exe <pfx_infile> <pfx_password>
// or pass a container name if the default is not what you need (e.g. C++)
SnInstallPfx.exe <pfx_infile> <pfx_password> <container_name>

0

สำหรับใครที่ใช้นักวิ่ง GitLab:

  • อย่าลืมรันนักวิ่งด้วยบัญชีที่คุณสามารถเข้าสู่ระบบได้: ./gitlab-runner.exe install --user ".\ENTER-YOUR-USERNAME" --password "ENTER-YOUR-PASSWORD"(ฉันต้องหยุดและถอนการติดตั้งก่อน)
  • ทำตามคำแนะนำนี้จะกำหนดให้สร้างได้รับอนุญาตให้ผู้ใช้เข้าสู่ระบบเป็นบริการ
  • เข้าสู่ระบบด้วยผู้ใช้สร้างดังกล่าว
  • ใช้คำสั่งที่แนะนำในคำตอบอื่น ๆ : sn -i certificate.pfx VS_KEY_C***6

แนะนำชื่อคอนเทนเนอร์ในเอาต์พุตงานที่ล้มเหลวบน GitLab (เอาต์พุต msbuild) ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.