|
メモ: Measurement Studio 8.1より、Measurement Studioアセンブリはauthenticode署名(デジタル署名)ではなくなります。このページで説明されている問題は、Measurement Studio 8.1以降を使用して開発/配布されたアプリケーションでは解消されています。まだAuthenticode署名のMeasurement Studioアセンブリを要求する場合は、NI技術サポートまでご連絡ください。
この動作はAuthenticode署名であるどの.NET 1.1および2.0アセンブリでも発生し、Measurement Studioも例外ではありません。デジタル署名はコードサイニング(Code Signing)とも呼ばれ、マイクロソフトは .NETライブラリに署名することを強く推奨しています。弊社ではMeasurement Studio の ActiveX や.NETコンポーネントに署名済みです。
アセンブリに署名することで、コンポーネントの改ざんを防ぎ、ユーザがコンポーネント発行者の証明を知ることができるようになります。
この問題は、署名のある.NETアセンブリを確認するために.NET共通言語ランタイム(CLR:Common Language Run-time)によって使用されたメカニズムによるものです。検証プロセスの一部では、ライブラリの証明書が廃止されたり期限切れになっていないかチェックするためにオンライン検索します。Windowsでは、この作業をCRL(Certificate Revocation List)をダウンロードすることで実行します。署名されたアセンブリを.NET CLRが最初にロードするとき、CRLが証明書発行元からダウンロードしてからシステムにキャッシュします。
.NET CLRが署名されたアセンブリをロードし、CLR発行元にアクセスできなかった場合、アセンブリの署名を確認できなかったという情報を記録します。したがってアセンブリはロードされますが、デジタル署名されていないものとして取り扱われます。WindowsがCRLをダウンロードできない場合には、15秒のタイムアウトになるまで再取得しようとします。よって.NETアセンブリの遅延はWindowsがCRLできずにタイムアウトになるまで15秒間ダウンロードし続けることが原因で、仕様通りの動作です。
.NET CLRが、CRLの配布元にアクセスできない場合には、署名済みアセンブリの確認中にエラーやセキュリティ関連の例外メッセージを出しません。.NET CLRが署名されたアセンブリを確認するのに使用する APIである゛WinVerifyTrust()゛からのエラーは、アセンブリに署名されたとマークすることを禁止します。これはInternet Explorerがホストするインターフェイスを通してロードされたアセンブリには適用されません。
CRLを手作業でダウンロードし、システムにインストールすることもできますが、CRLの有効期間は10日から15日であるため、システムがCRLファイルをアップデートしない限り、再度同じ現象が発生します。この問題に対してコンピュータごと、もしくはアプリケーションごとの回避策があります。
コンピュータごとの回避策
コンピュータごとの回避策として、マイクロソフト社はInternet Explorerの設定でCRLチェックを無効にすることを勧めています。Internet ExplorerでCRLチェックを無効にするには、以下の手順を行います。
さらに、プログラム的にCRL検証を設定することができます。発行元証明書の取り消しを確認するのチェックを外すと、レジストリで設定が変更されています。CRL検証を無効にするには、HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software Publishing\State from 0x00023c00を0x00023e00に設定します。CRL検証を再度有効にするには、Stateキーを0x00023c00に戻します。
アプリケーションごとの回避策
アプリケーションごとにこの問題を回避するには以下の手順を行います。
|