2016-09-29 19 views
0

ローカルWebサーバーがローカルファイルとフォルダ(参照、アップロード、ダウンロード...)を操作するために使用するローカルサーバーアプリケーション(現在はnodejsで書かれています)を開発しています。独自の証明書を使用してhttpsサーバーアプリケーションを作成する

基本的に、お客様はnodejsアプリをインストールし、ローカルサーバーは127.0.0.1でリッスンします。
次に、Webサイトで(たとえば)ローカルフォルダのリストが必要な場合、JSスクリプトはローカルサーバーに照会し、ローカルフォルダを返し、Webサイトに表示されます。

問題は、WebサイトがHTTPSで設定されている場合、WebサイトのJSがHTTP非Sノードノードアプリとの通信を拒否していることです。

我々はさまざまなオプション模索している:アプリで展開自己署名証明書を使用して

  • を、およびインストール時にマシン上でそれらを信頼し、私は多くの時間があるだろうと感じたとき、それはしません local.example.comのDNS証明書を使用して、local.example.comが127.0.0.1を指しているが、ほとんどの(すべてではないにしろ)認証局のCGUによって秘密鍵の一般公開への配布が禁止されているようです。

私は多分別の意味を考えました。適切なSSL証明書で署名されているexeファイル内に「パッケージ化された」HTTPSサーバー(任意の言語で書かれていますが、私は気にしません)、「リビング」はアプリの証明書を使用できますか?
私は何か意味があるかどうか分かりませんが、私は証明書をよく知りません...

ありがとう!

+0

「CGUによって一般の人に秘密鍵を配布することは禁止されています。」 – AEonAX

+0

また参照してください。http://stackoverflow.com/a/22258328/2186591 – AEonAX

+0

システム管理者は、 )、私は自分自身をチェックしていない(私は彼を信じる傾向がある)。そして、ええ、私はこの質問を見ました。 localhostを指すパブリックDNSは面白いですが、他の問題があります。例えば、私たちがアプリケーションをインストールする顧客の中には、インターネットアクセス(高セキュリティ制限)がないものがあります。公開DNSエントリの秘密鍵を配布する必要があるため、セキュリティ上のリスクは高いです。 – thomasb

答えて

0

我々はのcertutilを使用して自己署名ルートCAを追加することになった:

certutil.exe -user -addstore Root "mycert\rootca.cer" 

我々はルートCAを追加しているので、それはユーザーが受け入れる必要があることを警告ポップアップを生成し、それがあるとみなされていますその力によって受け入れられる。

最初に正しく追加されていない場合は、証明書をもう一度追加しようとすることができる「確認設定」画面があります。

グループポリシー(GPO)が自己署名証明書を信頼できない場合があります。この場合、certutilの戻りコードは0(証明書が追加されます)でもルートCAは信頼されないため、ローカルサーバーは機能しません。だから、インストール後に、我々は、証明書を使用して、信頼されていることを確認する必要があります。

certutil.exe -user -verifystore Root xxx 

xxxは、証明書のシリアル番号です)。証明書が信頼できない場合、このコマンドはエラーを返して終了するので、出力を解析してCERT_TRUST_IS_UNTRUSTED_ROOTまたは0x800b0109を出力します。

関連する問題