特電Spartan-7ボードのデバイスドライバで署名エラーが出る
特電Spartan-7ボードをお買い上げいただいたお客様から、ドライバのインストールができないというご連絡をいただきました。コード52というエラーで、署名が検証できないとのことだったのですが、EVコードサイニング証明書を使って正しく署名をしたはずでした。
このことで長いこと悩んでいたのですが、ようやく原因が判明しました。
その答えは自分の過去のブログにがありました。
http://nahitafu.cocolog-nifty.com/nahitafu/2017/08/windows10-4e3e.html
つまり、Windows 10のドライバはEVコードサイニング証明書(普通の証明書の2倍の値段)で署名するだけではダメで、
- 昔から存在するドライバ(特電のSpartan-6ボードやArtix-7ボード、MITOUJTAGの付属ケーブルは7年以上前に署名されたドライバを使っているため、最新のWindowsでも問題なく動きます。)
- Microsoftに認証されたドライバ
- カーネルの起動時に読み込まれるドライバ
しか受け付けてくれません。
この問題を回避する一番簡単な方法はOSのセキュアブートを無効にすることです。
セキュアブートとというのは、私も正確には理解していないのですが、OSのブート時からすべてのカーネルモードドライバがマイクロソフトの署名によって正当性のあるプログラムであることが裏付けられている動作状態なのでしょう。たぶん、UEFIがMicrosoftのブートローダかどうかを署名で確認して、ブートローダが署名されたカーネルモジュールかどうかを署名で確認して・・という著名のチェーンで認証されたカーネルモジュールしか組み込まないようにしているんじゃないでしょうか。
セキュアブートは一般的にはBIOS(UEFI)の設定でOFFにすることができます。設定の場所はUEFIによってそれぞれですが、私のPCではUEFIの設定画面の中でOSの種類を「Windows以外」にすることでOFFにできました。
最も正しい解決方法は、作ったドライバに対してマイクロソフトの署名をもらう方法なので、そのやり方も調べないといけなさそうです。
| 固定リンク
コメント