インターネット上にフォルダを置きたい

意味不明なタイトルです。適切なタイトル名が思いつかんかった。

ネット上に個人的なフォルダを持ちたい場合は、無料のサービスがいろいろありますね。実際、僕もマイクロソフトのSkyDriveサービスのアカウントを取得してファイルの置き場にしています。25GBもあるのでまぁ容量的な問題はないのですが、いかんせん使い勝手が悪い。転送速度が遅い。他の無料のサービスもそうなんですが、便利なことは便利なんですが、細かいところで少なからず不満があります。

で、今回、ちょっとWindows7の挙動が掴めず、ちょっとハマったので、その備忘録です。

ちょい、長めの記事なので・・・

まぁ、要はLAN内における、ネットワークフォルダのようなものを、WAN(インターネット)にも設置したい、ということです。幸い、フォルダの設置場所は、VPSサーバーで確保しているので問題なし。あとは設定のみ。

使うのは、Apache2.2 + WebDAVモジュールです。既にCentOS 5( VPSサーバーのOS)で、Apache2.2 + SSL がすでに稼働している状態を大前提として書いてます。あしからず。

今回の仕様は・・・

  • 設置するフォルダは一つ。
  • 通信経路上はなんらかの暗号化手段で(SSL)
  • なんらかの認証手段を用いて、フォルダの閲覧・読み込み・書き込みは自分だけができるようにする。
  • Windows上からは、エクスプローラシェルのフォルダとして普通にアクセスできること。
  • iPhoneなどの携帯デバイスでも読み書きできれば・・・。
  • 定期的なバックアップ手段は必要ない。
    とまぁ、こんな感じでしょうか。

WebDAVとSSLなどの設定自体は特に問題なしで、ブラウザでアクセスすると、まずSSLの警告がでます。使用している証明書は、オレオレ証明書なのが原因ですが、僕しかアクセスしないので問題なし。

で、ここの時点で、一度、「コンピュータ」内で右クリックして、「ネットワーク場所を追加」してみる。つまり、以前のWebフォルダのことだと思います。

ネットワークの場所を追加する

ですが・・・、

エラーが出て進めません。。。

unable-network-path

考えたあげく・・・思いついたのは・・・、「オレオレ証明書だから、ダメなのか???」 Vista以降、セキュリティー強化が図れたからなのかな???と思いつつ、オレオレ証明書をエクスポートして、コントロールパネルの資格情報マネージャ・証明書マネージャに「信頼されたルート証明機関」へ登録してみたけど・・・やっぱりダメ・・・・。

じゃぁ、しょうがねぇ・・・、もう一つの手段の、「ネットワークドライブの割り当て」でドライブに割り当ててみる。。。エクスプローラからやってみてもいいんだけど・・・エクスプローラのメニューってどうやってだすんだっけ?(笑)

ということで、コマンドプロンプトから・・・net コマンドでやってみる。

>> net use w: https://xxxxxx.yy/webshare

なんだこれ? 普通にできるジャン・・・(笑)

network-drive

コマンドプロンプトがお嫌いのかたは、エクスプローラから・・・(やっと出し方わかった(^^;;;

network-drive-with-explorer

さて、あとは・・・自分だけが使えるように、認証設定です。

認証手段は思いついただけで二つ。

  • Apacheサーバーのベーシック認証 もしくは ダイジェスト認証
  • クライアント証明書を発行して、クライアント(Windows)に登録する

SSLで通信経路は暗号化されているので、Apacheサーバーのベーシック認証でも良さそうなんですが・・・プレーンテキストなパスワードを流すのはちょっと・・・というわけで、ダイジェスト認証を・・・といきたいところですが・・・、いちいちユーザー名とパスワードを入れるのも面倒だ。

指紋認証やおサイフケータイのICカードでの認証を普段から使っていると、ユーザー名とパスワードを打ち込むという古いスタイル?がもう「めんどくせーーーー」っていうレベルになってきています(ーー;;;

というわけで?、クライアント証明書(オレオレ)を作成してWindowsに登録することで、パスワード認証を回避しました。

クライアント証明書をクライアントPCに登録せずに、フツーにブラウザで、アクセスしても・・・

ssl-access-error-with-chrome

のように、エラーでアクセスできません。

クライアント証明書を使った認証の設定は特に難しくなく、Apache2.2サーバー側で必要な設定は、↓のような感じです。クライアント証明書の作り方や、そもそもSSLサーバーの立て方は、ググればちゃんとした解説があるので、そっちを参考に。

<Location /webshare>
  DAV on

  # SSL(https)必須
  SSLRequireSSL
  #クライアント証明書を使った認証の場合
  SSLVerifyClient require
  SSLVerifyDepth  10

  #ダイジェスト認証の場合
  #AuthType Digest
  #AuthName "File Share over WebDAV"
  #AuthUserFile /home/webshare/.htdigest
  #Require valid-user
</Location>

クライアント証明書を証明書マネージャでインポート(登録先は自動を選択)してやり、ネットワークドライブを割り当ててやると・・・・証明書の選択というダイアログが出ますので、登録したものを選択します。

select-cert

・・・これでオール・オッケーーーー!と思いきや・・・、

なぜか、IE9(ベータ版)でアクセスすると・・・・エラーになります・・・。なんでだろ?

cannot-access-with-IE9

それと・・・「ネットワークの場所を追加する」では、なぜかエラーですすめず。。。

検索してみたけど・・・原因が分からん・・・ネットワークドライブはフツーに作れるのに・・・。よく分からん。

【おまけ・・・】

作成したそのフォルダにファイルをコピーしたけど・・・今度はサーバー側で書き込み権限の設定がおかしくて書き込めず・・・(T-T)

なんで?・・・と思ったら・・・ davロックデータベース?のディレクトリ(/var/lib/dav)の所有者・グループが、apacheデーモンのユーザー・グループと違っていた・・・おはずかし・・・