ここに、優れたSO回答があります。自己署名CAの作成と、取得した証明書を使用して実行可能ファイルに署名します。 コード署名用の自己署名証明書を作成するにはどうすればよいですか? Windows? 。
ドライバーの署名がどのように機能するかについてオンラインで多くのディスカッションを読みましたが、テストモードを有効にしないと、署名されていないドライバーや自己署名されたドライバーを読み込むことができないという答えはほぼ明白です。しかし、私がリンクした回答、特にRoger Lipscombeによる1つのコメントは、矛盾する見解を提供しているようです。
これをドライバーの署名に使用する場合は、CA証明書をマシンストアにインポートする必要があります。私の例では、テスト/内部の目的で、ユーザーストアにインポートします。これはほとんどのソフトウェアで問題ありません。
私には、CA証明書がマシンストアにインポートされている限り、自己署名証明書(自己署名CAによって発行された)を使用してドライバーをインストールできるように見えます。システムに他の変更を加える必要はありません(ブートメニューでF8キーを押してテストモードを無効にし、TESTSIGNINGやNOINTEGRITYCHECKSなどのブート構成フラグをいじります)。
私は正しいですか?適切なデジタル署名が提供されていないドライバー(古いプリンタードライバーなど)を読み込む必要がある場合に、この方法があまり広く使用されない場合の障害は何ですか。その代わり、人々は、テストモードまたはシステムファイルを改ざんしてサードパーティのソフトウェア(DSEO)で起動し、そのようなドライバーを実行することに依存しています。
この方法の欠点は何ですか?上記のプロセスSO=質問には管理者権限が必要ですが、ドライバーのインストールにはいずれにしてもそれが必要です。自己署名CAを信頼することはセキュリティ上のリスクになる可能性があります-すべての署名チェックを無効にすることはできませんより大きなセキュリティリスク?
いいえ、残念ながら、これは不可能です。WindowsVistaとWindows Server 2008から開始しています。
ドライバーは相互署名する必要があります。独自のCAを作成してマシンストアに追加するだけでは、新しく作成されたCAはWindowsの信頼チェーンによって信頼されないため、十分ではありません。
Windows VistaおよびWindows Server 2008では、新機能はコード署名テクノロジを利用しており、オペレーティングシステムのセキュリティに関する新しい要件は、ある種のコードにデジタル署名の使用を強制します。
コンポーネントは、このサイトのホワイトペーパーで説明されているように、Windowsが「信頼する」証明書によって署名されている必要があります。
参照されているホワイトペーパーの1つは Windows上のカーネルモジュールのデジタル署名 で、これはロードプロセスを説明し、自己署名では十分ではない理由を説明しています。
ドライバーがカーネルメモリに読み込まれると、Windows Vistaはドライバーイメージファイルのデジタル署名を検証します。ドライバーの種類に応じて、これはカタログファイルの署名付きハッシュ値か、イメージファイル自体の埋め込み署名のいずれかになります。カーネルドライバーパッケージに署名するときに使用される相互認証は、読み込み時の署名検証に使用されます。パス内の各証明書は、カーネルの信頼されたルートまでチェックされます。 ロード時の署名チェックでは、信頼されたルート認証局の証明書ストアにアクセスできません。代わりに、Windows Vistaカーネルに組み込まれているルート権限に依存する必要があります。
前述したように、これは デバイスドライバーの署名とステージングの要件 ページでも概説されています。
64ビットバージョンのWindows 7およびWindows Server 2008 R2には、カーネルモードデバイスドライバー用の特別な署名要件があります。 64ビットバージョンのWindowsを使用している場合、署名用に独自の証明書を作成することはできません。代わりに、チェーンするSoftware Publishing証明書を使用する必要があります承認された証明機関(CA)に送信します。
カーネルモードドライバーに署名するための有効なCAは、次のページにあります。
これについては、Geoff Chappellによる確かな記事があります: Windows 10でのライセンスされたドライバーの署名