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


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