1: 2021-09-07 (火) 09:00:28 yuji ソース 現: 2021-10-22 (金) 11:17:54 yuji ソース
Line 3: Line 3:
古いデバイスドライバーなどのデジタル署名がないデバイスドライバーをWindows 10にインストールして使用できるようにするには, 古いデバイスドライバーなどのデジタル署名がないデバイスドライバーをWindows 10にインストールして使用できるようにするには,
-- デジタル署名を無視してインストールできるテストモードでWindows 10を再起動する+- デジタル署名を無視してインストールできるテストモードでWindows 10を使用する
-[[Windows10で署名のないデバイスドライバを入れる>/PC/Windows/Windows10で署名のないデバイスドライバを入れる]]で説明している方法でインストールする。~ +この場合は,[[Windows10で署名のないデバイスドライバを入れる>/PC/Windows/Windows10で署名のないデバイスドライバを入れる]]で説明している方法でインストールする。~ 
-しかし手順が結構めんどうではある。+しかしこの手順が結構めんどう。
-- デバイスドライバーに自己署名する+- デバイスドライバーに自己電子証明書でデジタル署名する
-これは本来認証機関で行う承認した上でのデジタル署名を,自分で勝手にしてしまう方法。+これは本来第3者認証局(またはMicrosoft)で発行した電子証明書を使ってのデジタル署名を,自分で勝手にしてしまう方法。
-この時,Windowsマシンに自己証明書が信頼されているように登録する必要がある。+この時,デバイスドライバーのインストール時にデバイスドライバーの検証のためWindowsマシンの証明書ストアに自己署名証明書を信頼するように登録する必要がある。~
-のどちらかで,インストールすることが出来る。+のどちらかでインストールすることが出来る。
-ここでは,デバイスドライバーに自己署名してインストール出来るようにする手順を説明する。~+ここでは,デバイスドライバー(例:catファイルを使用するデバイスドライバー)に,勝手に作った自己電子証明書を使ってデジタル署名してインストール出来るようにしてみた。~
-** 自己証明書を作成する [#z67e8743+** 自己電子証明書の作成とWindowsマシンへの登録 [#m16020bc
-管理者権限で[[Windows Driver Kit>https://docs.microsoft.com/ja-jp/windows-hardware/drivers/download-the-wdk]]が動作するコマンドプロンプトを立ち上げる。~+デバイスドライバーにデジタル署名を追加するために使用する自己電子証明書を作成し,その自己電子証明書をWindowsマシンの証明書ストアに登録してデジタル署名が出来るようにして,さらに検証用の自己署名証明書を証明書ストアに登録する。~
-デバイスドライバーのcatファイルのデジタル署名の際に使用する証明書を作成する。~ +この時,登録した自己署名証明書を信頼された証明書にする。
- > makecert -r -pe -n "CN=hogehoge CA" -ss "hogehogeStore" xxxxxxxx.cer +
-として,証明書を作成する。~ +
-CNは発行先名で-ssはディレクトリ名なので,適当に指定して自己証明書を作成する。~+
-** 自己証明書のWindowsマシンへの登録 [#m16020bc+*** 自己電子証明書を作成する [#kd1373b8
-デバイスドライバー署名するために使用する自己証明書を作成し,それをWindowsマシンに登録する。+自己電子証明書を作成する詳細は[[オレオレ電子証明書の作成>/PC/デジタル署名とタイムスタンプ/オレオレ電子証明書の作成]]を参照。~
-*** 自己証明書を登録する [#kd1373b8] +Windowsマシンへ自己電子証明書(秘密鍵を含む)を作成して,証明書ストアに登録する。登録すると署名ツールでデバイスドライバーにデジタル署名する時に,その自己電子証明書を使用できるようになる。~
-Windowsマシンへ,以下のようにして自己証明書を登録する。~ +
-管理者権限で[[Windows Driver Kit>https://docs.microsoft.com/ja-jp/windows-hardware/drivers/download-the-wdk]]が動作するコマンドプロンプトを立ち上げる。~+
-まず,デバイスドライバーのcatファイルの署名の際に使用する証明書を勝手に作成する。~ +管理者権限で[[Windows Driver Kit>https://docs.microsoft.com/ja-jp/windows-hardware/drivers/download-the-wdk]]が動作するコマンドプロンプトを立ち上げる((Windows 11では標準でmakecert等のコマンドは使えるので,Windows Driver Kitは必ずしも必要ではない。))。~
- > makecert -r -pe -ss my -n "CN=hogehoge CA" -ss "hogehogeStore" xxxxxxxx.cer +
-として,証明書を作成する。~ +
-CNは発行先名でssはディレクトリ名になるので,これらを適当に指定して自己証明書を作成する。~+
-*** 自己証明書をWindowsマシンに登録する [#ea0a4de2] +まず,デバイスドライバー(catファイル)にデジタル署名する際に使用する自己電子証明書を,''makecert''コマンドで作成する。~ 
-Windowsマシンへ自己証明書を認証機関で信頼されたように登録する。~+''-r''オプションで自己署名ルート証明書が作成できるように指定している。~ 
 +''-n''オプションで証明書の名前を指定する。~ 
 +''-ss''オプションは登録する証明書ストア名を指定する。(デフォルトのストア名:''個人'')~ 
 +''-pe''オプションで自己電子証明書に秘密鍵を組み込むようにする。証明書ストアに登録してデジタル署名をする場合には秘密鍵が必要になるのでこのオプションを使う。~
-Windowsマシンに自己証明書を登録して,その登録した証明書を認証機関で証明したように信頼された証明書として設定する。+これらを適当に指定して自己証明書hogehoge.cer(cerファイルだが,実際にはバイナリフォーマットderになる)を作成する。
- > certmgr -add xxxxxxxx.cer -s -r localMachine root + > makecert -r -pe -n "CN=hogehoge CA" -ss "hogehogeStore" hogehoge.cer
- > certmgr -add xxxxxxxxe.cer -s -r localMachine trustedpublisher +
-  または +
- > certutil -addstore ROOT xxxxxxxx.cer +
- > certutil -addstore TrustedPublisher xxxxxxxx.cer+
-これで,作成した自己証明書が使用できるようになる。+Microsoftのmakecertコマンドだと,デフォルトだと署名アルゴリズムが''sha1''になるので注意する。~ 
 +署名アルゴリズムをsha256にする場合は,''-a sha256''のオプションを追加する((古いバージョンのmakecertコマンドだとsha1しか使えない。))必要がある。~
-** デバイスドライバーのinfファイルからcatファイルを作成する [#v9e84533]+うまくいくとWindowsの証明書ストアの''-ss''オプションで指定したところに,自己電子証明書(秘密鍵付)が登録され,デジタル署名時にこの署名用の電子証明書(秘密鍵付)が使用出来るようになる。~ 
 + 
 +また,コマンド実行したディレクトリに自己署名証明書(公開鍵付)hogehoge.cerが作成される。この証明書はデジタル署名されているデバイスドライバーを検証する時に使用できる。~ 
 + 
 +*** 自己署名証明書をWindowsマシンに登録する [#ea0a4de2] 
 +作成された自己署名証明書hogehoge.cerを,第3者認証機関で発行した信頼のある証明書を登録するのと同じように,証明書ストアの''信頼されたルート証明機関''と''信頼された発行元''に登録する。~ 
 + 
 +これは,デバイスドライバーがインストールされる時に''デジタル署名の検証がうまく行えるようにする''ため。~ 
 + 
 +登録する時にWindows標準の''certutil''コマンドが使用できるが,[[Windows Driver Kit>https://docs.microsoft.com/ja-jp/windows-hardware/drivers/download-the-wdk]]等がインストールされていれば''certmgr''コマンドも使用できる。~ 
 +// > certmgr -add xxxxxxxx.cer -s -r localMachine root 
 +// > certmgr -add xxxxxxxxe.cer -s -r localMachine trustedpublisher 
 +//  または 
 + > certutil -addstore ROOT hogehoge.cer 
 + > certutil -addstore TrustedPublisher hogehoge.cer 
 + 
 +これで,作成した自己署名証明書がWindowsマシンの証明書ストアの''信頼されたルート証明機関''と''信頼された発行元''に登録されて,デバイスドライバーのインストール時にデジタル署名の検証に使用できるようになる。~ 
 + 
 +** デバイスドライバーに自己電子証明書でデジタル署名する [#s035cdaf] 
 +署名がないデバイスドライバーに,作成した自己電子証明書を使ってデジタル署名してみる。~ 
 + 
 +ここでは,''catファイルとinfファイルを使ったデバイスドライバー''を例として試してみる。~ 
 + 
 +*** デバイスドライバーのinfファイルからcatファイルを作成する [#v9e84533]
まず,デバイスドライバーのinfファイルにcatファイル情報を追加する。~ まず,デバイスドライバーのinfファイルにcatファイル情報を追加する。~
infファイルを編集し,[Version]のところの最後のラインに, infファイルを編集し,[Version]のところの最後のラインに,
- CatalogFile=xxxxxxxx.cat + CatalogFile=hogehoge.cat 
-と,catファイルの定義を追加する。~+とcatファイルの定義を追加する。(hogehogeはデバイスドライバーのファイル名)~
次にデバイスドライバーのinfファイルから,未署名のcatファイルを作成する。~ 次にデバイスドライバーのinfファイルから,未署名のcatファイルを作成する。~
-このとき,/os:オプションで対象のテストするOSを指定する。カンマ区切りで複数の指定が出来る。inf2catをオプション無しで実行すると,使用できるOSリストが表示される。+この時,''/os:''オプションで対象となるOSを指定するようだ。カンマ区切りで複数の指定が出来る。~ 
- > inf2cat /driver:infファイルが有るディレクトリ /os:10_X64,10_19H1_X64,...+inf2catをオプション無しで実行すると,使用できるOSリストが表示される。
 + > inf2cat /driver:infファイルが有るディレクトリ /os:10_X86,10_X64,...
-これで,xxxxxxxx.catファイルが作成される。~+これで,未署名のhogehoge.catファイルが作成される。~
-** デバイスドライバーのcatファイルに自己署名を追加する [#u4099817] +*** デバイスドライバーのcatファイルにデジタル署名を追加する [#u4099817] 
-上記で作成した自己証明書を使用して,デバイスドライバーのcatファイルにデジタル署名を追加する。~ +証明書ストアに登録されている自己電子証明書(秘密鍵付)を利用して,''sightool''コマンドを使ってデバイスドライバーのcatファイルにデジタル署名を追加する。~
-このとき,自己証明書を作成した時の発行先名とディレクトリ名を,-nと-sで指定する。~ +
- > signtool sign -v  -n "hogehoge CA" -s hogehogeStore xxxxxxxx.cat+
-これで,デバイスドライバーのcatファイルに自己証明書でデジタル署名が出来た。+このとき,''-n''オプションで自己電子証明書を作成した時の名前を,''-s''オプションで証明書ストア名(登録場所)を指定する。~ 
 + 
 +新しいバージョンのsigntoolコマンドだと,''-fd''オプションで署名アルゴリズムに''sha1''か''sha256''を指定する(makecertで作成した署名用電子証明書のアルゴリズム)必要がある。~ 
 +また,デバイスドライバーが複数のinfファイルが有る場合,catファイルにデジタル署名する場合はそのうちの一つを指定する必要がある。''-a''オプションを使うと複数の自己電子証明書(秘密鍵付)がある場合,自動的に最適な証明書を選択するようだ。その他多くのオプションが有る。~ 
 + > signtool sign -v -n "hogehoge CA" -s hogehogeStore hogehoge.cat 
 +   もしくは 
 + > signtool sign -fd sha1 -a -v -n "hogehoge CA" -s hogehogeStore hogehoge.cat 
 + 
 +これで,デバイスドライバーのcatファイルに自己電子証明書を使ってデジタル署名が出来た。
* デバイスドライバーをインストールする [#f4e445ed] * デバイスドライバーをインストールする [#f4e445ed]
-デバイスドライバーに自己署名が出来たら,デバイスをPCに接続してデバイスマネージャーを開く。+デバイスドライバーにデジタル署名が出来たら,デバイスをPCに接続してデバイスマネージャーを開く。~ 
-プラグ&プレイ(自動)でデバイスドライバーがインストール出来なかったデバイスに?が表示されているので,上記で作成したデバイスドライバーのディレクトリをしてインストールする。+ 
 +プラグ&プレイ(自動)でデバイスドライバーがインストール出来なかったデバイスに?が表示されているので,上記で作成したデバイスドライバーのディレクトリを指定すると,デバイスドライバーが無事インストールできた :) ~ 
 + 
 +別のWindowsマシンへこのデジタル署名したデバイスドライバーをインストールするためには,作成した自己署名証明書をその人の証明書ストアの''信頼されたルート証明機関''と''信頼された発行元に登録する''必要がある。~


トップ   差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 7935, today: 3, yesterday: 0