4

自己署名証明書を使用する組み込み Web サーバーを使用するデスクトップ製品があります。

ルート CA を信頼できるリストに追加していないことを検出し、リンクや DIV、またはその方法を指示する何かを表示する Web ページに入れることができるものはありますか?

CAのインストールに関する指示があるDIVと、何らかのテストを実行し(内部警告なしで何かにアクセスしようとします??)、テストが成功した場合はDIVを非表示にするJavascriptを考えています。またはそのようなもの...

華麗な SO コミュニティからのアイデアはありますか? :)

4

9 に答える 9

10

なぜこれをしたいのですか?Web サイトで指示されたからといって、無差別にルート CA 証明書をインストールするようにユーザーを訓練するのは、悪い考えです。あなたは信頼の連鎖全体を弱体化させています。セキュリティ意識の高いユーザーは、証明書をインストールするようにというアドバイスを無視し、既存の CA から証明書をわざわざ取得していないため、セキュリティを真剣に考えていないと結論付ける可能性があります。

本当に HTTPS が必要ですか? もしそうなら、あなたはおそらく弾丸をかじってCAと契約を結び、適切なCA署名付きサーバー証明書を顧客に提供しやすくする必要があります. Web サーバーがデスクトップ アプリからのローカル接続にのみ使用される場合は、インストール プロセスの一部として自己署名証明書を信頼できるリストに追加するか、代わりに HTTP に切り替える必要があります。

于 2009-05-22T17:55:05.763 に答える
2

C# の知識があり、pfx ファイルをインストールしたいとします。URL から実行される exe を作成します。このURLに従ってください

于 2009-05-18T14:12:41.273 に答える
2

これを行うべきではありません。ルート証明書は、インストールするだけのものではありません。追加すると、https によって提供されるセキュリティが損なわれる可能性があるためです。

ただし、デスクトップ アプリを作成している場合は、127.0.0.1 のみをリッスンします。こうすることで、トラフィックがユーザーのコンピューターから離れることはなく、攻撃者は傍受できません。

于 2009-05-23T09:50:13.400 に答える
2

私が持っている唯一のアイデアは、フレームといくつかの JavaScript を使用することです。

フレームの最初の要素は、x 時間 (javascript setTimeout) 待機するウォッチドッグとして機能し、ハイパーリンクまたは自己署名証明書をダウンロードするための指示を使用してカスタム SSL 失敗メッセージをユーザーに表示します。

2 番目のフレーム要素は https 接続を試行し、成功した場合はウォッチドッグ フレームをリセットして起動しないようにします。失敗した場合 (https 証明書の検証が失敗したと仮定)、ウォッチドッグ メッセージが起動し、ユーザーに表示されます。

お使いのブラウザーによっては、このアプローチで何らかのセキュリティ警告が表示される可能性が高いですが、少なくとも、ユーザーが適切な信頼チェーンを持たない信頼できないコードを実行する必要なく、独自のコンテンツをプッシュすることができます (これは、セキュリティからははるかに悪いことです)。証明書の検証エラーを受け入れて信頼されていない SSL セッションを確立するよりも POV)

XMLHttpRequest などの他のテスト方法を使用して、概念を改善できる可能性があります。

于 2009-05-20T05:45:39.360 に答える
0

ユーザー セッションごとに 1 回、(非表示の) Flex 要素または Java アプレットを追加しようとする場合があります。サーバーの https ページをダウンロードするだけで、接続に関するすべての情報が取得されます。

com.sun.deploy.security.CertificateHostnameVerifier.verify()
or
javax.security.cert.X509Certificate.checkValidity()

Flex (ユーザーにとってより一般的) には、ユーザーの観点から https 証明書を検証する同様の方法があるはずです。また、OS の信頼できる証明書も共有する必要があります。ストアしますが、Java には独自のものがある場合があります。

于 2009-05-21T22:00:59.803 に答える
0

この問題に関連する Forge と呼ばれるオープンソースの JavaScript プロジェクトに取り組んできました。ユーザーがアクセスできる Web サイトはありますか? その場合、クロスドメイン用の Flash と TLS 用の JavaScript の組み合わせを使用して、ウェブサイト経由でこれらのデスクトップ アプリへの安全な接続を提供できます。デスクトップ アプリの証明書への署名証明書を処理するために、Web サイトにいくつかの Web サービスを実装する必要があります (または、JavaScript 経由でアクセスできるように、デスクトップ アプリに自己署名証明書をアップロードさせる必要があります)。ここでどのように機能するかを説明します。

http://blog.digitalbazaar.com/2010/07/20/javascript-tls-1/

Web サイトをセットアップする代わりに、デスクトップ アプリ サーバーで JavaScript+Flash を直接ホストすることで、MiTM 攻撃が可能になるため安全性が低くなります。ユーザーに通常の http 経由でデスクトップ アプリをヒットさせて JS+Flash+SSL 証明書をダウンロードさせ、その後 JS 経由で TLS の使用を開始することができます。localhost 接続を使用している場合、MiTM 攻撃の心配は少し少ないかもしれません。おそらく、このオプションを検討するのに十分でしょう。

于 2010-07-22T15:48:30.710 に答える
0

要約すると、デスクトップ アプリに Web サーバーを設定しています。各デスクトップには独自の Web サーバーがありますが、その Web サーバーへの接続を保護するために SSL を使用する必要があります。

証明書にはいくつかの問題があると思います。1 つは、デスクトップへのアクセスに使用されるホスト名が証明書と一致する必要があることです。この場合、クライアントで証明書を生成する以外に選択肢はほとんどありません。部外者が使用する名前がホスト自体から検出できない場合に備えて、何らかの方法でユーザーがホスト名を指定できるようにする必要があります。

また、自己署名証明書に依存したくない人のために、管理者が信頼できる証明書をインストールできるようにすることをお勧めします。このようにして、信頼できる証明書のメンテナンスのコストを、本当に必要としている管理者にオフロードすることもできます。

最後に、私の経験では、ブラウザーは自己署名証明書を許可または拒否します。サーバーは、証明書が拒否されているか、一時的に受け入れられているか、永続的に受け入れられているかを知る方法がありません。SSL の失敗を処理するメカニズムがどこかにあるに違いないと思いますが、通常の Web プログラミングはその層では動作しません。いずれにせよ、SSL が失敗した場合に Web サーバーができる唯一のことは、非 SSL にフォールバックすることであり、コメントで非 SSL を使用できないことを示しました。その制限を解除するように努めるべきだと思います。非 SSL の開始ページは、この状況で非常に役立ちます。(フレーム、画像、JSON、または AJAX を使用して) https 接続をテストでき、証明書の設定方法や証明書のダウンロード先に関するドキュメントにリンクできます。証明書のインストーラー。

自己署名証明書が原因でブラウザが接続できず、プレーン HTTP の使用がまったく許可されていない場合、他にどのような手段でユーザーと通信できますか? 他のチャネルはなく、コミュニケーションがないため確立できません。

証明書をインストールするためのwin32アプリを書いているコメントで言及しました。アプリケーション自体をインストールするときに証明書をインストールすることもできますが、それはリモート ブラウザーには役に立たず、ローカル ブラウザーは localhost にアクセスするために SSL を必要としません。

于 2009-05-25T14:28:45.287 に答える
0

サーバーはクライアント マシン (デスクトップ製品) で実行されているため、winapi/os 関数を使用して、サポートされているブラウザーにインストールされている証明書を確認できませんか? Firefox にはユーザーのプロファイル ディレクトリに証明書データベースがあり、IE はおそらくレジストリに情報を保持していることを知っています。すべてのブラウザーで信頼できるわけではありませんが、サーバーが単に「証明書が見つかりました」と「続行する前に証明書をインストールしたことを確認してください」のどちらかを選択した場合、ユーザーはどちらの方法でも続行できるため、害はありません。

また、組み込みブラウザー (つまり gecko) を提供することで問題を単純化することもできます。この方法では、処理するブラウザーが 1 つだけになり、多くのこと (ルート CA の事前インストールを含む) が単純化されます。

于 2009-05-24T13:23:39.653 に答える