Mendapatkan MSP430 Driver USB Ditandatangani oleh Microsoft

11

Saya mengembangkan produk yang menggunakan mikrokontroler MSP430 dengan modul USB bawaan. Saya memperoleh PID dari Texas Instruments dan menggunakan alat mereka untuk menghasilkan deskriptor, serta file .inf untuk menginstal perangkat lunak driver. Masalah yang jelas adalah bahwa karena sifat kustom dari file-file ini, sebuah popup disajikan (pada Windows 7) setelah mencolokkan kabel USB yang memperingatkan pengguna bahwa pengemudi tidak masuk. Saya percaya pada Windows 8 dan Windows 10 itu hanya memblokirnya dan tidak menunjukkan ini kepada pengguna sama sekali.

Karena ini adalah produk berfitur lengkap yang rencananya akan dirilis oleh perusahaan saya, kami perlu mendapatkan sertifikat driver (saya percaya dalam bentuk file .cat?) Yang dapat kami berikan kepada pelanggan sehingga mereka dapat menginstal perangkat perangkat lunak driver tanpa masalah.

Saya telah melalui sedikit dokumentasi Microsoft (terutama dokumen ini ) mencoba untuk memahami apa yang diperlukan untuk mendapatkan driver yang ditandatangani, tetapi sayangnya ini masih di atas kepala saya saat ini.

Inilah yang saya pikir saya mengerti sejauh ini:

  • Saya perlu mengirimkan driver saya (file .inf?) Ke otoritas sertifikat resmi Microsoft (CA). Ada sejumlah ini di luar sana, jadi saya perlu menemukan satu yang menandatangani driver.
  • Setelah memilih CA, umumnya saya harus membayar biaya tahunan (paling umum untuk 1, 2, atau 3 tahun) untuk layanan mereka. Setiap driver yang saya hasilkan selama waktu ini akan ditandatangani secara permanen, bahkan setelah layanan berakhir. Jika saya ingin mengganti driver atau membuat yang baru setelah layanan berakhir, saya perlu membeli layanan untuk 1, 2, atau 3 tahun lagi.
  • Setelah membayar biayanya, CA akan menghasilkan file kucing yang merupakan sertifikat yang memastikan bahwa driver yang saya berikan kepada mereka tidak akan diubah. Jika itu terjadi maka tidak akan lagi cocok dengan file .cat dan kesalahan akan muncul selama instalasi

Apakah ini benar? Dengan risiko terdengar seperti saya sedang mencari rekomendasi untuk CA tertentu (saya tidak, ingatkan Anda), di mana saya dapat menemukan daftar CA yang dapat melakukan sertifikasi ini untuk saya? Yang lebih baik lagi adalah situs web dan / atau harga mereka untuk durasi layanan yang berbeda. Adakah orang di sini yang memiliki pengalaman langsung mendapatkan driver untuk produk berbasis mikrokontroler USB yang ditandatangani oleh CA, yang akan dapat membantu saya memahami dan melewati prosesnya? Saya sudah memposting ke forum MSDN tetapi tampaknya sudah mati di sana - Sudah dua hari dan utas saya hanya memiliki sedikit pandangan.

DerStrom8
sumber
Apakah driver Anda fitur lengkap, yang perlu mengeksekusi kode dalam mode kernel, atau itu hanya file inf? Jika itu hanya file inf, driver bawaan apa (file .sys) yang dimuat?
Jack B
Di sinilah saya gagal, saya tidak tahu banyak tentang inner PC dan bagaimana driver bekerja. Perangkat saya dirancang di sekitar MSP430 dengan modul USB bawaan. Perangkat ini hanya memiliki antarmuka CDC melalui koneksi USB, jadi yang dilakukannya hanyalah membuka port COM virtual
DerStrom8
Seperti desain duduk sekarang, itu sebenarnya di papan pengembangan dan ketika saya mencoba menginstal perangkat menggunakan file .inf, saya mendapatkan kesalahan standar dari Windows 7: davidegrayson.com/signing/img/win7_unverified_publisher.png . Sementara itu untuk pengujian saya baru saja menggunakan file .inf dan .cat yang disediakan dengan salah satu contoh CDC dari paket MSP430Ware, tetapi ketika saya merilis produk ini saya tidak akan bisa melakukannya lagi. Jika saya tidak salah, ini tidak mengeksekusi kode dalam mode kernal
DerStrom8
1
Singkatnya: Anda dapat menandatanganinya dengan sertifikat penandatanganan kode normal, dengan harga sekitar £ 80 / tahun terakhir saya melihat. Tidak perlu untuk semua hal penandatanganan silang Microsoft. Tetapi pada Windows 8.1 dan sebelumnya itu tidak dapat diandalkan (kami tidak bisa melewati EN61326 dengan itu) sehingga Anda mungkin ingin memiliki alternatif berbaris juga. Jika tidak ada yang mengalahkan saya untuk itu, saya akan menulis jawaban setelah makan malam.
Jack B
1
@AdamLawrence Saya kembali beberapa jam kemudian dan tidak melihat bahwa saya perlu menambahkan apa pun pada jawaban Anda. Sangat baik bagi saya.
Jack B

Jawaban:

16

Sebenarnya tidak terlalu buruk. Saya telah melakukan ini beberapa kali di tempat kerja, menulis dan menandatangani .INF / .CAT untuk Microchip PIC24FJ64GB002 berbasis USB CDC-ACM-ke-I 2 C antarmuka.

  • Menjalin hubungan dengan otoritas sertifikat. Anda harus memberi mereka beberapa informasi dasar yang akan divalidasi. Jika Anda menggunakan Extended Validation (EV) mereka akan meminta lebih banyak, tetapi Anda tidak perlu melangkah sejauh itu. Thawte, Digicert dan Comodo adalah beberapa contoh CA.

  • Beli sertifikat penandatanganan kode Authenticode dari CA. Ini yang Anda perlukan untuk menandatangani file .CAT yang terkait dengan file .INF Anda. Anda tidak memerlukan sertifikat mode-kernel untuk tingkat penandatanganan ini.

  • Instal sertifikat (tanpa berkata)

  • Unduh kerangka kerja Windows SDK dan Windows Driver Kit untuk mendapatkan alat Microsoft yang diperlukan (pembuatan dan penandatanganan katalog).

  • Paket dan tandatangani driver:

    • Gunakan inf2cat untuk menghasilkan file katalog (.CAT) untuk file .INF
    • Gunakan signtool untuk menandatangani file katalog

Dari titik ini Anda dapat membuat semacam penginstal driver, atau menggunakan dpinst dari SDK untuk melakukan otomatisasi instalasi dasar.

EDIT: Catatan dari berbagai komentar di bawah:

  1. Membuat file .INF untuk memuat USBSER.SYS tidak membuat driver mode kernel - Anda menggunakan USBSER.SYS (sudah terpasang, sudah masuk, dan dipercaya), tidak membuat sesuatu yang baru - dan karenanya tidak memerlukan penandatanganan EV sertifikat dan sertifikasi WHQL. Hanya diperlukan sertifikat Authenticode dasar.
  2. Mulai dengan Windows 10, Anda tidak perlu masuk .INF sama sekali untuk perangkat USBSER.SYS, karena Windows akan mengambil perangkat USB CDC-ACM (Class_02) secara otomatis. Mereka juga telah menulis ulang driver dari awal dan berfungsi jauh lebih baik sekarang (bahkan menangani pemindahan perangkat yang tak terduga dan penyisipan ulang tanpa mengunci port COM virtual, yang merupakan nilai tambah besar !). Yang mengatakan, Anda masih dapat menggunakan pendekatan driver yang ditandatangani jika Anda benar-benar ingin - driver yang ditandatangani masih akan 'bekerja'. Masih ada banyak Win 8.1 / 8/7 dan mesin yang lebih tua di luar sana sehingga memiliki driver yang ditandatangani masih agak penting untuk perangkat USB CDC-ACM.

Perluasan lebih lanjut untuk pertanyaan Anda:

  • Anda tidak mengirimkan apa pun untuk penandatanganan ke CA - Anda membeli sertifikat penandatanganan kode, menginstalnya pada mesin dan melakukan validasi .INF dan menandatangani sendiri.
  • Anda tidak perlu membayar biaya tahunan per se - namun, sertifikat yang Anda beli akan memiliki periode validitas 1-, 2- atau 3 tahun. Ketika sertifikat berakhir, Anda harus membeli yang baru untuk dapat terus menandatanganinya - apa pun yang sebelumnya ditandatangani akan tetap valid tetapi Anda kehilangan kemampuan untuk menandatangani barang baru.
  • .CAT adalah hash untuk .INF - setiap perubahan pada .INF akan dideteksi dan sertifikat tidak akan lagi valid, yang berarti .INF akan berperilaku seperti yang tidak ditandatangani.
Adam Lawrence
sumber
4
Lebih detail: Adafruit's Cara Masuk Windows Drivers & Executables .
CL.
4
Ini adalah jawaban yang sangat bagus, memang sangat membantu. Anda pasti membuatnya terdengar lebih mudah dari yang saya harapkan. Saya akan melihat ini. Sementara itu saya akan menerima jawaban ini karena langkah-langkah yang jelas dan langsung disediakan. Bersulang!
DerStrom8
2
@ poizan42 Ini bukan driver mode-kernal. Ini adalah perangkat CDC USB sederhana yang hanya membuka port COM virtual. Tidak ada eksekusi kode mode kernal yang dilakukan.
DerStrom8
1
Hanya ingin menindaklanjuti. Langkah-langkah ini bekerja dengan sempurna hanya dengan satu peringatan: inf2cat.exe tidak datang dengan Windows SDK, Anda harus menginstal Windows Driver Kit (WDK) juga: docs.microsoft.com/en-us/windows-hardware/drivers/ ... . Terima kasih banyak atas bantuan Anda, saya sekarang dapat menginstal perangkat lunak driver saya tanpa peringatan - ini menunjukkan perusahaan saya sebagai penerbit seperti yang diharapkan
DerStrom8
2
Jawabannya diubah. Terima kasih telah menunjukkan yang sudah jelas (sudah beberapa tahun sejak saya menginstal toolchain)
Adam Lawrence