上野家のホームページ
ナーマル,マリン,ココ
[
新規
|
一覧
|
検索
|
最新
|
ヘルプ
]
PC/Windows/デバイスドライバーに自己署名する
のソース
資料室
PC
/
Windows
/
デバイスドライバーに自己署名する
のソース
[
差分
|
バックアップ
|
リロード
]
[ ]
差分
を表示
PC/Windows/デバイスドライバーに自己署名する
へ行く。
« Prev
* デバイスドライバーに自己署名する [#y20fb8a0] デジタル署名が無いデバイスドライバーは,Windows 10などでは通常インストール出来なくなっている。~ 古いデバイスドライバーなどのデジタル署名がないデバイスドライバーをWindows 10にインストールして使用できるようにするには, - デジタル署名を無視してインストールできるテストモードでWindows 10を再起動する~ [[Windows10で署名のないデバイスドライバを入れる>/PC/Windows/Windows10で署名のないデバイスドライバを入れる]]で説明している方法でインストールする。~ しかしこの手順が結構めんどう。~ - デバイスドライバーに自己電子証明書でデジタル署名する~ これは本来認証局(またはMicrosoft)で発行した電子証明書を使ってのデジタル署名を,自分で勝手にしてしまう方法。~ この時,検証のためWindowsマシンの証明書ストアに自己署名証明書を信頼するように登録する必要がある。 のどちらかで,インストールすることが出来る。 ここでは,デバイスドライバー(例:catファイルを使用するデバイスドライバー)に勝手に作った自己電子証明書を使ってデジタル署名して,インストール出来るようにしてみた。~ ** 自己電子証明書の作成とWindowsマシンへの登録 [#m16020bc] デバイスドライバーにデジタル署名を追加するために使用する自己電子証明書を作成し,その自己電子証明書をWindowsマシンの証明書ストアに登録し,さらに検証用に自己署名証明書を証明書ストアに登録する。~ この時,登録した自己署名証明書を信頼された証明書にする。 *** 自己電子証明書を作成する [#kd1373b8] 自己電子証明書を作成する詳細は,[[オレオレ電子証明書の作成>/PC/デジタル署名とタイムスタンプ/オレオレ電子証明書の作成]]を参照する。~ Windowsマシンへ自己電子証明書(秘密鍵を含む)をを作成して,証明書ストアに登録する。登録すると署名ツールでデジタル署名する時に使用できるようになる。~ 管理者権限で[[Windows Driver Kit>https://docs.microsoft.com/ja-jp/windows-hardware/drivers/download-the-wdk]]が動作するコマンドプロンプトを立ち上げる。~ まず,デバイスドライバー(catファイル)にデジタル署名する際に使用する自己電子証明書を''makecert''コマンドで作成する。~ ''-r''オプションで自己署名証明書の作成を指定している。''-n''オプションでCN=での発行者が発行先にも指定される。''-ss''オプションは登録する証明書ストア名(登録場所:デフォルトはMy)になる。~ ''-pe''オプションで秘密鍵を自己電子証明書に含めている。~ これらを適当に指定して自己証明書hogehoge.cer(cerファイルだが,実際にはバイナリフォーマットderになる)を作成する。~ > makecert -r -pe -n "CN=hogehoge CA" -ss "hogehogeStore" hogehoge.cer Microsoftのmakecertコマンドだと,デフォルトだと署名アルゴリズムが''sha1''になるので注意する。~ 署名アルゴリズムをsha256にする場合は,''-a sha256''のオプションを追加する((古いバージョンのmakecertコマンドだとsha1しか使えない。))必要がある。~ うまくいくと,証明書ストアの''-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ファイルを編集し,[Version]のところの最後のラインに, CatalogFile=hogehoge.cat と,catファイルの定義を追加する。~ 次にデバイスドライバーのinfファイルから,未署名のcatファイルを作成する。~ このとき,/os:オプションで対象となるOSを指定する。カンマ区切りで複数の指定が出来る。inf2catをオプション無しで実行すると,使用できるOSリストが表示される。~ > inf2cat /driver:infファイルが有るディレクトリ /os:10_X64,10_19H1_X64,... これで,未署名のhogehoge.catファイルが作成される。~ *** デバイスドライバーのcatファイルにデジタル署名を追加する [#u4099817] 上記で作成して証明書ストアに登録されている自己電子証明書(秘密鍵付)を利用して,''sightool''コマンドを使ってデバイスドライバーの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] デバイスドライバーにデジタル署名が出来たら,デバイスをPCに接続してデバイスマネージャーを開く。~ プラグ&プレイ(自動)でデバイスドライバーがインストール出来なかったデバイスに?が表示されているので,上記で作成したデバイスドライバーのディレクトリを指定すると,デバイスドライバーが無事インストールできた :) ~ 別の人のWindowsへこのデジタル署名したデバイスドライバーをインストールするためには,作成した自己署名証明書をその人の''証明書ストアの信頼されたルート証明機関と信頼された発行元に登録する''必要がある。
« Prev
PC/Windows/デバイスドライバーに自己署名する のバックアップ一覧
PC/Windows/デバイスドライバーに自己署名する のバックアップソース(No. All)
1: 2021-09-07 (火) 09:00:28
yuji
現: 2021-10-22 (金) 12:17:54
yuji
Counter: 7093, today: 1, yesterday: 0
Copyright©2008 Yuji Ueno All Rights Reserved.
ログイン
ユーザ名:
パスワード:
IDとパスワードを記憶
パスワード紛失
メインメニュー
ホーム
でぶlog
資料室
最新ページ一覧
全ページ一覧
ヘルプ
» 関連ページ
» Wikiソース
» 編集履歴
» バックアップ一覧
» 添付ファイル一覧
フォーラム
お問い合わせ