ネットワーク上にバックアップする(2/2)

さてでは、共用サーバ上にWebDAV経由で暗号化したファイルを保存します。

最初に言っておくと、EFSはめちゃくちゃ厄介です。素人がEFSを使うと、暗号化はできるけど、復号できないという問題が必ず発生します。まずは以下の2つをよく読んでEFSを理解することから始まります。

一応おさらい

登場人物

  • 旗艦PC(アカウントは home とします)
  • ノートPC(アカウントは remote とします)
  • 共用サーバ(ここでWebDAVを動かしている)

前提条件

  • 旗艦PC、ノートPCともそれぞれのマシンにおいて、一度でもいいので「ディレクトリorファイル右クリック」→「プロパティ」→「詳細設定」→「内容を暗号化してデータをセキュリティで保護する」を実行しておく。(これにより暗号化するためのキーが作成される。すでに暗号化していたら必要ない)
  • 旗艦PC、ノートPCともWebDAVで w にネットワークドライブを割り当てていることとします

さぁでは共用サーバ上に保存したファイルを暗号化しましょう

1. 旗艦PCで暗号化する

まずは旗艦PCでWebDAV上にファイル(a.txt)を作成し、すぐに暗号化します。共用サーバにSSHなどでログインして、そのファイルをviすると何やらわけのわからないファイルになっていることがわかります。EFSの仕様に沿って暗号化されているということです。ノートPCで、そのa.txtファイルの存在は確認できますが、開こうとするとエラーになるハズです。

さらに詳しく言うと、旗艦PCのhomeユーザしか読めない状態で、旗艦PCにotherユーザを作ってa.txtファイルを読もうとしても読めません。

2. ノートPCで証明書をエクスポートする

ノートPCでファイルを読めるようにするために、ノートPCのremoteユーザをa.txtの読み込み可能に追加してやらなければなりません。その際必要となるのがremoteユーザの「証明書」です。

ノートPC上でremoteユーザでログインし、「Win+R」→「ファイル名を指定して実行」→「certmgr.msc」→「個人」→「証明書」にremoteユーザの証明書が表示されるハズです。(ここに何もなければ一度も暗号化してないということ)

この証明書を右クリックして「すべてのタスク」→「エクスポート」します。その際「秘密鍵をエクスポートしますか?」と聞かれますがここでは「エクスポートしない」とします。形式は「DER encoded binary X509(CER)」とし、ファイル名を remote とすると、remote.cer というファイルが作成されます。

3. 旗艦PCでremote.cerをインポートする

旗艦PC上でhomeユーザでログインし、「certmgr.msc」→「信頼されたユーザー」→「証明書」→「右クリック」→「すべてのタスク」→「インポート」でremote.cerをインポートします。

4. 旗艦PCでa.txtのアクセス可能ユーザにremoteユーザを追加する

旗艦PC上でhomeユーザでログインし、「a.txt 右クリック」→「詳細設定」→「内容を暗号化してデータをセキュリティで保護する 詳細設定ボタン」→「追加」→「remoteをユーザ選択」。
※remoteユーザが一覧に出てこなかったら一度ログオフする

5. ノートPCでa.txtファイルを読めるか

ノートPC上でremoteユーザでログインし、a.txtファイルをダブルクリックして表示できるか確認する。開ければ拍手喝采

6. 複数のファイルを一括してremoteユーザで読めるようにするには

Windows7GUIはホントにアホなのでエクスプローラから複数のファイルに対して一括して許可ユーザを追加することはできません。フォルダに対しても許可ユーザを追加することはできないので、暗号化ファイルが100個あったら、100回同じ操作を繰り返さないといけない・・。ホントにアホです。

そんな時はコマンドラインから以下のように実行すると、folder1 以下の全ファイルに対してremoteユーザを許可ユーザとして追加してくれます。

cipher /adduser /certfile:c:\temp\remote.cer /s:w:\folder1

ある特定のファイルだけを対象としたければ、

for /r %i in (*.txt) do @cipher /adduser /certfile:c:\temp\remote.cer %i

などとすればOK。