การรับไดรเวอร์ USB MSP430 ที่ลงชื่อโดย Microsoft


11

ฉันกำลังพัฒนาผลิตภัณฑ์ซึ่งใช้ไมโครคอนโทรลเลอร์ MSP430 พร้อมโมดูล USB ในตัว ฉันได้รับ PID จาก Texas Instruments และใช้เครื่องมือของพวกเขาในการสร้าง descriptors รวมถึงไฟล์. inf เพื่อติดตั้งซอฟต์แวร์ไดรเวอร์ ปัญหาที่ชัดเจนคือเนื่องจากลักษณะที่กำหนดเองของไฟล์เหล่านี้จะมีป๊อปอัพปรากฏขึ้น (ใน Windows 7) เมื่อทำการเสียบสาย USB ที่เตือนผู้ใช้ว่าไดรเวอร์ไม่ได้ลงชื่อ ฉันเชื่อใน Windows 8 และ Windows 10 มันบล็อกเพียงและไม่ได้ระบุสิ่งนี้กับผู้ใช้เลย

เนื่องจากเป็นผลิตภัณฑ์ที่มีคุณสมบัติครบถ้วนซึ่ง บริษัท ของฉันวางแผนที่จะวางจำหน่ายเราจึงต้องขอรับใบรับรองไดรเวอร์ (ฉันเชื่อในรูปแบบของไฟล์. cat?) ที่เราสามารถมอบให้กับลูกค้าเพื่อให้สามารถติดตั้งอุปกรณ์ได้ ซอฟต์แวร์ไดรเวอร์โดยไม่มีปัญหา

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

นี่คือสิ่งที่ฉันคิดว่าฉันเข้าใจ:

  • ฉันต้องส่งไดรเวอร์ (ไฟล์. inf?) ไปยังผู้ออกใบรับรองที่ได้รับอนุญาตจาก Microsoft (CA) มีจำนวนของสิ่งเหล่านี้อยู่ที่นั่นดังนั้นฉันจะต้องค้นหาสิ่งที่สัญญาณไดรเวอร์
  • หลังจากเลือก CA โดยทั่วไปแล้วฉันจะต้องจ่ายค่าธรรมเนียมรายปี (โดยทั่วไปคือ 1, 2 หรือ 3 ปี) สำหรับบริการของพวกเขา ไดรเวอร์ใด ๆ ที่ฉันสร้างขึ้นในช่วงเวลานี้จะถูกลงชื่ออย่างถาวรแม้หลังจากที่บริการหมดอายุ ถ้าฉันต้องการเปลี่ยนไดรเวอร์หรือสร้างใหม่หลังจากบริการหมดอายุฉันจะต้องซื้อบริการอีก 1, 2 หรือ 3 ปี
  • หลังจากชำระค่าธรรมเนียม CA จะสร้างไฟล์. cat ซึ่งเป็นใบรับรองที่รับรองได้ว่าไดรเวอร์ที่ฉันให้ไว้จะไม่เปลี่ยนแปลง หากมันไม่ตรงกับไฟล์. cat และข้อผิดพลาดจะปรากฏขึ้นระหว่างการติดตั้ง

ถูกต้องหรือไม่ เสี่ยงต่อการทำให้เกิดเสียงเหมือนฉันกำลังมองหาคำแนะนำสำหรับ CA เฉพาะ (ฉันไม่เป็นไรคุณ) ฉันจะหารายชื่อของ CA ที่สามารถทำใบรับรองนี้ให้ฉันได้ที่ไหน ยิ่งไปกว่านั้นจะเป็นเว็บไซต์และ / หรือราคาสำหรับช่วงเวลาการบริการที่แตกต่างกัน มีใครบ้างในที่นี้ที่มีประสบการณ์ตรงในการรับไดร์เวอร์สำหรับผลิตภัณฑ์ที่ใช้ไมโครคอนโทรลเลอร์ USB ที่ลงนามโดย CA ซึ่งจะช่วยให้ฉันเข้าใจและผ่านกระบวนการได้หรือไม่ ฉันโพสต์ไปยังฟอรัม MSDN แล้วแต่ดูเหมือนว่าจะตายไปแล้ว - ผ่านมาสองวันแล้วและเธรดของฉันมีเพียงจำนวนการดู


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

นี่คือที่ฉันล้มเหลวฉันไม่รู้มากเกี่ยวกับการทำงานภายในของพีซีและวิธีการทำงานของไดรเวอร์ อุปกรณ์ของฉันได้รับการออกแบบรอบ ๆ MSP430 พร้อมโมดูล USB ในตัว อุปกรณ์นี้มีอินเทอร์เฟซ CDC ผ่านการเชื่อมต่อ USB ดังนั้นทั้งหมดจึงเปิดพอร์ต COM เสมือน
DerStrom8

เช่นการออกแบบตั้งอยู่ตอนนี้มันเป็นจริงในคณะกรรมการพัฒนาและเมื่อผมลองติดตั้งอุปกรณ์ที่ใช้แฟ้ม .inf ฉันได้รับข้อผิดพลาดมาตรฐานจาก Windows 7: davidegrayson.com/signing/img/win7_unverified_publisher.png ในระหว่างการทดสอบฉันเพิ่งใช้ไฟล์. inf และ. cat ที่มาพร้อมกับหนึ่งในตัวอย่าง CDC จากแพ็คเกจ MSP430Ware แต่เมื่อฉันเปิดตัวผลิตภัณฑ์นี้ฉันจะไม่สามารถทำเช่นนั้นได้อีก ถ้าฉันไม่เข้าใจผิดนี่ไม่ได้รันโค้ดในโหมด kernal
DerStrom8

1
ในระยะสั้น: คุณสามารถเซ็นชื่อด้วยใบรับรองการลงนามรหัสปกติราคาประมาณ£ 80 / ปีล่าสุดที่ฉันดู ไม่จำเป็นต้องมีทุกสิ่งที่ไขว้ลงนาม Microsoft แต่ใน Windows 8.1 และก่อนหน้านี้มันไม่น่าเชื่อถือสุด ๆ (เราไม่สามารถผ่าน EN61326 ได้) ดังนั้นคุณอาจต้องการมีทางเลือกอื่น ๆ ถ้าไม่มีใครชนะฉันฉันจะเขียนคำตอบหลังอาหารเย็น
แจ็ค B

1
@ AdamLawrence ฉันกลับมาอีกสองสามชั่วโมงต่อมาและไม่เห็นว่าฉันต้องเพิ่มอะไรในคำตอบของคุณ สบายดีโดยฉัน
แจ็ค B

คำตอบ:


16

มันไม่ได้เลวร้ายจริงๆ ฉันได้ทำสิ่งนี้สองสามครั้งในที่ทำงานเขียนและลงนามใน. INF / .CAT สำหรับ Microchip PIC24FJ64GB002 ที่ใช้ USB CDC-ACM-to-I 2 C อินเตอร์เฟส

  • สร้างความสัมพันธ์กับผู้ออกใบรับรอง คุณจะต้องให้ข้อมูลพื้นฐานบางอย่างซึ่งพวกเขาจะตรวจสอบ หากคุณไปที่ Extended Validation (EV) พวกเขาจะขอมากขึ้น แต่คุณไม่จำเป็นต้องไปไกลขนาดนั้น Thawte, Digicert และ Comodo เป็นตัวอย่างของ CAs

  • ซื้อใบรับรองการลงนามรหัส Authenticode จาก CA นี่คือสิ่งที่คุณต้องลงชื่อไฟล์. CAT ที่เกี่ยวข้องกับไฟล์. INF ของคุณ คุณไม่จำเป็นต้องมีใบรับรองโหมดเคอร์เนลสำหรับการลงชื่อระดับนี้

  • ติดตั้งใบรับรอง (ไปโดยไม่บอก)

  • ดาวน์โหลดกรอบงาน Windows SDKและชุดไดรเวอร์ Windowsเพื่อรับเครื่องมือ Microsoft ที่จำเป็น (การสร้างแคตตาล็อกและการเซ็นชื่อ)

  • แพ็คเกจและเซ็นต์ไดรเวอร์:

    • ใช้inf2catเพื่อสร้างไฟล์ catalog (.CAT) สำหรับไฟล์. INF
    • ใช้signtoolเพื่อลงชื่อไฟล์แคตตาล็อก

จากจุดนี้คุณสามารถทำการติดตั้งไดรเวอร์บางประเภทหรือใช้dpinstจาก SDK เพื่อทำการติดตั้งอัตโนมัติขั้นพื้นฐาน

แก้ไข:หมายเหตุจากความคิดเห็นต่างๆด้านล่าง:

  1. การสร้างไฟล์. INF เพื่อโหลด USBSER.SYS ไม่ได้สร้างไดรเวอร์โหมดเคอร์เนล - คุณกำลังใช้ USBSER.SYS (ในตัว, ลงนามและเชื่อถือได้แล้ว), ไม่ได้สร้างสิ่งใหม่ - และเช่นนี้ไม่จำเป็นต้องมีการเซ็น EV ใบรับรองและการรับรอง WHQL ใบรับรอง Authenticode พื้นฐานคือทั้งหมดที่จำเป็น
  2. เริ่มต้นด้วย Windows 10 คุณไม่จำเป็นต้องมี. INF เลยสำหรับอุปกรณ์ USBSER.SYS เนื่องจาก Windows จะรับอุปกรณ์ USB CDC-ACM (Class_02) โดยอัตโนมัติอย่างน่าอัศจรรย์ พวกเขาได้เขียนไดรเวอร์ใหม่อีกครั้งตั้งแต่เริ่มต้นและมันทำงานได้ดีขึ้นมากในขณะนี้ (แม้จะจัดการกับการลบอุปกรณ์ที่ไม่คาดคิดและการแทรกซ้ำโดยไม่ล็อคพอร์ต COM เสมือนซึ่งเป็นข้อดีอย่างมาก !) ที่กล่าวว่าคุณยังคงสามารถใช้วิธีการลงนามไดรเวอร์หากคุณต้องการ - ไดรเวอร์ที่ลงนามจะยังคง 'ทำงาน' ยังมี Win 8.1 / 8/7 และเครื่องรุ่นเก่าอยู่มากมายดังนั้นการมีไดร์เวอร์ที่เซ็นชื่อจึงค่อนข้างสำคัญสำหรับอุปกรณ์ USB CDC-ACM

การขยายคำถามเพิ่มเติมของคุณ:

  • คุณไม่ได้ส่งสิ่งใดสำหรับการลงนามใน CA - คุณซื้อใบรับรองการลงนามรหัสติดตั้งบนเครื่องและทำการตรวจสอบ. INF และลงนามด้วยตัวคุณเอง
  • คุณไม่จำเป็นต้องจ่ายค่าธรรมเนียมรายปีต่อ se - อย่างไรก็ตามใบรับรองที่คุณซื้อจะมีระยะเวลาที่ใช้ได้ 1, 2 หรือ 3 ปี เมื่อใบรับรองหมดอายุคุณจะต้องซื้อใหม่เพื่อให้สามารถลงชื่อได้ - สิ่งใด ๆ ที่ลงชื่อไว้ก่อนหน้านี้จะยังคงใช้ได้ แต่คุณสูญเสียความสามารถในการลงชื่อสิ่งใหม่ ๆ
  • .CAT เป็นแฮชสำหรับ. INF - การเปลี่ยนแปลงใด ๆ ที่มีต่อ. INF จะถูกตรวจพบและใบรับรองจะไม่ถูกต้องอีกต่อไปซึ่งหมายความว่า. INF จะทำตัวเหมือนไม่ได้ลงนาม

4
รายละเอียดเพิ่มเติม: Adafruit เป็นวิธีการเข้าสู่ระบบไดรเวอร์สำหรับ Windows และ Executables
CL

4
นี่เป็นคำตอบที่ยอดเยี่ยมมีประโยชน์มากจริงๆ คุณทำให้มันฟังง่ายกว่าที่ฉันคาดไว้มาก ฉันจะตรวจสอบเรื่องนี้ ในระหว่างนี้ฉันจะยอมรับคำตอบนี้เนื่องจากขั้นตอนที่ชัดเจนและตรงไปตรงมา ไชโย!
DerStrom8

2
@ poizan42 นี่ไม่ใช่โปรแกรมควบคุมโหมด kernal นี่คืออุปกรณ์ USB CDC ทั่วไปที่เปิดพอร์ต COM เสมือนเท่านั้น ไม่มีการใช้รหัสในโหมด kernal
DerStrom8

1
แค่อยากติดตาม ขั้นตอนเหล่านี้ทำงานได้อย่างสมบูรณ์แบบด้วยข้อแม้เพียงข้อเดียว: inf2cat.exe ไม่ได้มาพร้อมกับ Windows SDK คุณต้องติดตั้ง Windows Driver Kit (WDK) ด้วย: docs.microsoft.com/en-us/windows-hardware/drivers/ … . ขอบคุณมากสำหรับความช่วยเหลือของคุณตอนนี้ฉันสามารถติดตั้งซอฟต์แวร์ไดรเวอร์ของฉันโดยไม่มีคำเตือนใด ๆ - มันแสดงให้เห็นว่า บริษัท ของฉันเป็นผู้เผยแพร่ตามที่คาดไว้
DerStrom8

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