Q

Windows 2000 Serverのドメイン・コントローラで構築したActive Directory環境で,ユーザーのクライアントOSとしてWindows XPProfessionalとWindows 2000 Professionalの2種類を使用しています。

 セキュリティを確保するために,ローカルのフォルダあるいはファイルはEFS(暗号化ファイル・システム)で暗号化させています。

 あるときから,ドメインに存在する複数のWindows XP Professionalマシンで,ファイルを暗号化する際の処理が中断するようになってしまいました。そのときの画面には[ファイルの属性の適用中にエラーが発生しました]というメッセージが表示されます(図2)。この現象はWindows XPでしか発生しておらず,Windows 2000を使っているユーザーは問題なく使い続けています。

図2 ●Windows XPで暗号化を設定したフォルダやファイルに書き込もうとすると,ある時期からエラーが表示されるようになる

 どのようにすれば,また暗号化ができるようになるでしょうか?
 なお,ドメイン内に証明書を発行するCA(認証機関)はありません。



A

図2のエラー画面を見ると[このシステムに対して構成された回復ポリシーに無効な回復証明書が含まれています]というメッセージが表示されています。このことから,今回の問題は暗号化されたファイルを復号(回復)するために必要なドメイン内の証明書が有効期限切れとなったために発生したと推測されます。

回復証明書の期限切れで暗号化が中断
 EFSでは,ランダムに生成されたファイル暗号化キーを使ってファイルを暗号化しています。この暗号化キー自体も,ユーザーが持つ公開鍵で暗号化しファイルの一部として格納されています(図3)。ファイルを読み出す際には,ユーザーの持つ秘密鍵を使って暗号化キーを取り出すため,通常そのユーザー以外は復号化することはできません。各ユーザーの公開鍵と復号鍵は,CAがない場合はOSが自動的に生成します。

図3●EFS(暗号化ファイル・システム)では,ファイルの暗号化に使うキーそのものを暗号化してファイル内に格納する
キーを暗号化した情報はユーザー公開鍵と回復用公開鍵の2種類について同時に格納している。

 EFSで暗号化されたファイルが,ユーザーを削除したなどの何らかの理由で復号化できなくなった場合でも取り出せるように用意しているのが,ファイル回復の機能です。暗号化の際に,ファイル暗号化キーをユーザー公開鍵で暗号化すると同時に,回復用公開鍵でも暗号化していっしょにファイルの一部として格納しています。これにより,回復エージェントが回復用秘密鍵を使ってファイル暗号化キーを復号化することで暗号化したファイルを回復することもできます。

 この回復用公開鍵と回復用秘密鍵のペアがEFS回復証明書です。ActiveDirectory環境ではドメインが生成された時に3年間の有効期間で作成され,ドメインのグループ・ポリシーに含まれる形で存在しています。

 3年間という有効期限のあるEFS回復証明書ですが,Windows 2000では実際にはチェックしておらず有効期限が切れても使い続けることができます。しかし,Windows XP以降のOSでは,この有効期限をチェックするようになっています。このことは,マイクロソフトのサポート技術情報で公開されています(281251)

 EFSは証明書を自動では更新しません。そのため,管理者が手動で回復ポリシーで必要となる証明書の更新を実行する必要が生じます。この作業を実行せずに証明書の有効期限が切れたままになっているために今回のエラーが出てしまっているのです。

コマンドで再作成しポリシーにマップ
 EFS回復証明書はWindows XPの暗号化コマンドである「cipher」を使って作成できます。有効期限をチェックしないWindows 2000には,EFS回復証明書の更新や再作成を実行する機能はありませんので注意してください。

 具体的な手順は以下の通りです。まず,Windows XPマシンに回復エージェントとして指定されている管理ユーザーのアカウント(通常はドメインのAdministrator)でログオンし以下のコマンドを実行します。


△ 図をクリックすると拡大されます
図4●Windows XPのcipherコマンドを使うとEFSの回復証明書を再生成できる

 cipher /r:(任意のファイル名)

 すると,EFS 回復証明書を含んだ.CERファイルと,証明書と秘密鍵を含んだ.PFXファイルがそれぞれ作成されますので,それらをドメイン・コントローラにコピーします(図4)。

 次に,コピーした秘密鍵付き証明書をインポートします。cipherコマンドを実行したユーザー名でドメイン・コントローラにログオンし,.PFXファイルを右クリックして[PFXのインストール]を実行します。すると,証明書のインポート・ウィザードが起動するので,証明書ファイルのパスやcipherコマンド実行時に登録したパスワードを入力した後に,証明書のストアの配置場所を「個人」に設定します。


△ 図をクリックすると拡大されます
図5●再生成した回復証明書をドメインのグループ・ポリシーにマッピングすれば有効期限を更新できる

 最後に,[Active Directoryユーザーとコンピュータ]でドメインに対するグループ・ポリシーを編集し,EFS回復証明書をマッピングします。グループ・ポリシー・エディタでドメインのグループ・ポリシーであるDefaultDomain Policyを開き[コンピュータの構成]-[Windowsの設定]-[セキュリティの設定]-[公開キーのポリシー]にある[暗号化されたデータの回復エージェント]を右クリックして[新規作成]-[暗号化された回復エージェント]を選択します(図5)。

 [回復エージェントの追加ウィザード]が起動したら次へ進み,[フォルダの参照]をクリックしてコピーした.CERファイルを選択してウィザードを完了します。このとき[証明書は検証できません]と表示されますが,そのまま[OK]を選んで終了します。 これで,クライアントのWindowsXP Professionalマシンを再起動すれば,再びEFS暗号化を利用できるようになります。

 もしEFS回復証明書を発行できるCAが存在する場合,発行された証明書を回復エージェントへ同様にインポートすることもできます。この方法はマイクロソフトのサポート技術情報に記されています(273856)。

永尾 幸夫