署名がないドライバをインストールする方法

icon 項目のみ表示/展開表示の切り替え

概要

Windowsの64bit版を普通に起動すると署名がないデバイスドライバをインストールすることはできません。
これはセキュリティ上の措置です。
ここでは、署名がないドライバをインストールするための準備の方法を記述します。

テスト環境

コンパイラ

ドライバの開発 WDK7
ドライバを制御するソフトの開発 Visual C++ 2013

実行環境

Windows 7 Enterprise 64bit
Windows 8.1 Enterprise 64bit

ドライバ開発環境の構築とビルドの方法

デバイスドライバのインストール

Windowsの64ビット版では普通に起動すると署名されていないデバイスドライバをインストールすることができません。
インストールするには以下の3つの方法があります。
①マイクロソフトのお墨付き証明機関の証明書で署名しインストール
②自分自身で証明書を作成署名しテストモードで起動してインストール
③起動時にF8を押してブートメニューを表示させ、ドライバー署名の強制を無効にするを選択して署名なしのドライバをインストール

証明機関の証明書で署名

金銭的な負担を別にすればマイクロソフトのお墨付き証明機関の証明書を発行してもらい組み込む方法がベストですが、個人で取得するとデバイスドライバのプロパティに個人の本名が表示され、配布すると本名が公開せれてしまうことになります。(もともと配布先を証明するためのものです。)
COMODO( https://comodo.jp/ )
費用は、年間21,000円(税込)です。(H27.6.27現在)

自己証明書で証明

ドライバファイルに自己証明することによりテストモードによりインストールすることができます。
ドライバー署名の強制を無効すると全部のドライバが署名なしでインストールできるのでセキュリティが下がりますが、テストモードの場合、署名されたドライバのみが対象となりセキュリティが上がります。
ただし、ディスクトップのタスクバーの右上に以下のようなウォーターマークが表示されます。

証明書を作成するためにVisual C++ 2013 Expressを使用します。
今後、以下の条件にしたがって署名する方法について記述する
証明書のファイル名 my_root
証明書名 MY_CA
パスワード freepass
署名するファイル beeptest64.sys
署名するファイルがある場所 d:\beeptest64\beeptest64\objfre_win7_amd64\amd64
証明書の作成と署名
スタートメニューよりVisual C++ 2013・Visual Studio ツール ・VS2013 x64 Cross Tools コマンド プロンプトを選択します。
他のバージョンでVisual C++のコマンドプロンプトを起動して以下のコマンドが見つからない場合は、C:\Program Files (x86)\Windows Kits等のフォルダーの中を探してください。見つからない場合は、Windows SDKをインストールします。
起動したコマンドプロンプトに以下のように入力してコマンドを実行します。
makecert実行後にパスワードを聞いてきますが、入力せずにokをクリックしてください。再度パスワードが不要であるか聞いてきますが、Yesを選択してください。
ローカルマシーンに証明書がストアされたかどうかの確認は、 以下のコマンド実行後、mmcコマンドを実行しファイルメニューよりスナップインの追加と削除より証明書を追加すると確認できます。
d:
cd d:\beeptest64\beeptest64\objfre_win7_amd64\amd64
makecert -sv my_root.pvk -a sha1 -eku 1.3.6.1.5.5.7.3.3 -r -ss Root -len 2048 -sr localMachine -n "CN=MY_CA" -r my_root.cer
cert2spc my_root.cer my_root.spc
pvk2pfx -pvk my_root.pvk -pi freepass -spc my_root.spc -pfx my_root.pfx
signtool sign /f my_root.pfx /p freepass /d my_root /v beeptest64.sys
テストモードのon/off
テストモードをonにするためには、管理者権限でログインしコマンドプロンプトで以下のコマンドを入力し実行すると、次回起動時からテストモードになる。
bcdedit -set TESTSIGNING ON
テストモードをoffにするためには、管理者権限でログインしコマンドプロンプトで以下のコマンドを入力し実行すると、次回起動時から通常モードになる。
bcdedit -set TESTSIGNING OFF

ドライバー署名の強制を無効にしてインストール

起動時にF8を押してブートメニューよりドライバー署名の強制を無効を選択して起動すると署名のないドライバをインストールすることができます。起動のたびに毎回選択する必要があります。
ドライバー署名の強制を無効すると全部のドライバが署名なしでインストールできるのでセキュリティが下がります。