2013-05-01 13 views
10

CORSウェブアプリケーション(javascriptのみ)を作成しました。ここでは、 をインストールして別のLANで実行したいと考えています。WebアプリケーションのためのWIFIの保護

私はSSLを入れたいと思いますが、 の正確な設定が何であるかはわかりません。たぶん毎回違うでしょう。だから私は 私は認定SSLを追加することはできないと思う。 SSLを使用した ソリューションがありますか?私は、警告のために、認証されていない SSLを追加するアプローチが嫌いです。

他にどのようにパッケージを暗号化し、要求を の安全な認証にすることができますか?私はCouchDBのデフォルトのCORSを使用していますが、Webアプリケーションがインストールされて開いているWIFIで使用されている場合、パッケージは になります。 アプリケーションはjavascriptのみを使用していますが、私はどのようにして を保護できますか(唯一のバックエンドはcouchDB内のストレージです)。

+1

"アプリケーションはJavaScriptのみを使用していますが、私はそれをどのように保護することができないのでしょうか"私はJavaScriptがクライアント側の言語だと言っています。 –

+1

この設定でWIFIの役割は何ですか? – likeitlikeit

+0

SSL(HTTPS)を使用すると、すべてのHTTP要求および応答データがネットワーク経由で送信される前に暗号化されるため、Open Wi-Fi経由でWebアプリケーションにアクセスする場合でも、安全な通信(完全性と機密性) Wi-Fiをセキュリティで保護するには、ワイヤレスセキュリティ、WEP(Wired Equivalent Privacy)またはWPA(Wi-Fi Protected Access)(http://en.wikipedia.org/wiki/Wireless_security)のプロトコルを使用する必要があります。開いているWi-Fiを保護するために、SSLの使用に関係なく使用できます。 SSLは、クライアントとWebアプリケーションの間でインターネット上の保護を提供することに注意してください。 –

答えて

6

CORS対応アプリケーションの設計は、SSLを使用するかどうかに直接関係しません。 this section of the CORS specificationを参照してください。

CORSをサポートし、SSL接続を介してアプリケーションを提供するようにアプリケーションを設計することは、別々の決定であり、同じ人物でさえできない可能性があります。 「異なるLANの下にインストールして実行する」と言えば、おそらく異なるドメインの下に、異なる人/企業がサーバー側のコードをホストするということを意味していると思います。

SSL terminationがWebサーバーに要求をプロキシする別のデバイスである可能性があるため、コードをホストしているWebサーバーがSSLを実行しているWebサーバーと同じであるとは考えないでください。

この文書のようなケースでは、インストール手順でSSLが必要となる可能性があり、その環境に適した方法で(またはそうでないように)行うことができます。

2

あなたの質問(JavaScriptのみ)を理解してから、Google's hosted librariesのように、1つのHTTPSホストを使用してJavaScriptファイルを配信することができます。

CouchDBホストがクラウドに存在しない場合は、個々の(安価な)SSL証明書をクラウドに割り当てる必要があります。セキュリティが本当に重要な場合、クライアントはトランスポート層セキュリティのために〜8 $ /年以上フォークすることができます。

2

私が正しくあなたの質問を理解するのであれば、:

  • をあなたは、クロスオリジン・リクエストを使用してアクセスすることができるWebアプリケーションを持っています。
  • このアプリケーションはローカルネットワーク上に展開されます。つまり、非公開のIPアドレス(そのネットワーク上にあるマシンであれば「ローカルサーバー」と呼びます)を介してアクセスします。
  • 好ましくはSSLを使用して、クライアントとローカルサーバー間のリンクを保護する必要があります。

これは可能です。ローカルサーバーの制御権を持つユーザーがsomesubdomain.SomeDomainHeControls.comのSSL証明書を取得し、その証明書をローカルサーバーに展開し、そのサブドメインをローカルIPにポイントします。そのアドレスを介してアプリケーションにアクセスすると、警告が表示されず、接続が保護されます。クライアントがそのドメインを使用してアプリケーションにのみアクセスする限り、サーバーの所有者だけがそのキーにアクセスできるため、これは安全です。

ローカルサーバーを自分で制御する(秘密キーを抽出できない)場合は、*.aDomainForThisPurposeThatYouControl.comのワイルドカード証明書を取得し、適切なIPをポイントする各展開用のサブドメインを作成するだけです。

ローカルサーバーを制御しておらず、自分の証明書を取得できない場合は、個の個別の証明書を取得できます。これは、deployment1.aDomainForThisPurposeThatYouControl.comを作成し、それをローカルIPに向け、その名前のための通常の単一ホスト証明書を作成し、ローカルサーバーにインストールすることを意味します。安全上の予防措置として、あなたがこのドメイン上のホストの秘密鍵を与えたので、他の目的でそのドメインを使用しないでください。

また、ローカルネットワークがインターネットにアクセスできる場合は、管理下にある外部サーバーでアプリケーション自体をホストすることもできます。そのサーバーに定期的なSSLを展開します。アプリケーション自体が外部サーバーから安全にロードされた後、ローカルサーバーからデータを取得するためのプレーンなHTTP要求を行うことができます。これにより、「混在コンテンツ」警告が発生しますが、SSLエラーは発生しません。その後、JavaScriptベースの暗号化を使用してデータを保護することができます。たとえば、クライアントからサーバーに向かうデータだけを保護したい場合、外部の信頼できるサーバーは信頼できるJS暗号ライブラリと内部サーバーのRSA公開キー(SSL認証接続経由)をクライアントに提供できます。単純なHTTP経由で送信する前に、クライアント側でデータを暗号化するだけです。理論的には、JavaScriptでSSLクライアントを作成し、スクリプトと信頼できるサーバー証明書をクライアントに提供し、HTTPまたはWebSocketsトンネルを使用し、このトンネルを介してローカルサーバーとJavaScriptクライアント間で独自のSSL接続を実行することもできます。もちろんこれはあまり実用的ではありませんが、安全です(JSはセキュアな接続を介してダウンロードされるため)。信頼できるサーバーから小さなJavaScriptをロードし、残りの部分をローカルサーバーからダウンロードし、署名/ハッシュを検証して実行することもできます。 Megauploadはそのようなことをしています。

関連する問題