7

高度なSSLギャルとみんな-これは2日間の期間の後に、思慮深く答える人には報酬に値する複雑なテーマだと思うので、これに報奨金を追加します。

ここでの仮定のいくつかは、単純に次のとおりです。仮定、またはより正確には希望に満ちた推測。これを頭の体操と考えてください。単に「これは不可能です」と言うだけでは意味がありません。

「似たような」ことをしたことがあれば、代替の部分的な解決策を歓迎します。個人的な経験です。計画全体に欠陥があったとしても、これから何かを学びたいと思っています。

シナリオは次のとおりです。

私は組み込みLinuxシステムで開発しており、そのWebサーバーがすぐに使用できる手間のかからないSSLを提供できるようにしたいと考えています。私が目指している設計基準は次のとおりです。

持っている必要があります:

  • ユーザーに自分で作成したCA証明書をブラウザに追加させることはできません
  • 静的に生成された(製造時に)自己署名証明書をユーザーに追加させることはできません
  • 動的に生成された(起動時に)自己署名証明書をユーザーにブラウザーに追加させることはできません。
  • デフォルトでHTTPに設定できず、SSLの有効化/無効化を切り替えることができません。SSLである必要があります。
  • 埋め込みボックスとWebブラウザクライアントの両方がインターネットにアクセスできる場合とない場合があるため、インターネットにアクセスできなくても正しく機能すると想定する必要があります。信頼できるルートCAは、オペレーティングシステムまたはブラウザに付属しているものだけです。そのリストがブラウザとオペレーティングシステム間で「基本的に」同じであると仮定しましょう。つまり、それらに依存する場合、成功率は最大90%になります。
  • 夜間のフライバイオペレーション、つまり' Fast EddieのSSL証明書クリアリングハウスを使用することはできません。この低価格では、サーバーをハッキングする必要があります。'

持っていてよかった:

  • 証明書のホスト名がブラウザのホスト名と一致しないことをユーザーに警告したくありません。それは不可能かもしれないので、私はこれを持っているといいと思います。

ほしくない:

  • 各ボックスに同じ静的キーのセットを出荷したくありません。「できない」リストによって暗示されるようなものですが、私はリスクを知っています。

はいはい、わかっています。

  • ユーザーが自分の証明書/キーをアップロードするためのメカニズムを提供することはできますが、実際に提供していますが、これは「高度なモード」であり、この質問の範囲外であると考えています。ユーザーが独自の内部CAを持っているか、キーを購入するのに十分進んでいる場合、それらは素晴らしいものであり、私はそれらが大好きです。

思考キャップタイム

SSLでの私の経験は、「​​実際の」ルートによって署名される証明書/キーを生成することと、独自の内部CAを作成し、内部で「自己署名」証明書を配布することでゲームを少し強化することです。証明書をチェーンできることは知っていますが、操作の順序がわかりません。つまり、ブラウザはチェーンを「ウォークアップ」して、有効なルートCAを認識し、それを有効な証明書として認識しますか?それとも、すべてのレベルで検証を行う必要がありますか?

中間認証局の説明に出くわし、潜在的な解決策について考えさせられました。「単純な解決策」から「悪夢のモード」に移行した可能性がありますが、次のことが可能でしょうか。

クレイジーアイデア#1

  • 「実際の」CAによって署名された中間認証局証明書を取得します。(ICA-1)
    • ROOT_CA-> ICA-1
  • この証明書は、製造時に、ボックスごとに一意のパスワードなしのサブ中間認証局ペアを生成するために使用されます。
    • ICA-1-> ICA-2
  • ICA-2を使用して、一意のサーバー証明書/キーを生成します。ここでの注意点は、IPのキー/ペアを生成できますか(DNS名ではありませんか?)?つまり、これの潜在的な使用例は、ユーザーが最初にhttp経由でボックスに接続し、次にリダイレクトURLのIPを使用してクライアントをSSLサービスにリダイレクトすることです(ブラウザーが不一致について文句を言わないようにするため)。これは家を倒すカードかもしれません。リダイレクトが発生する前にSSL接続を確立する必要があるため、これも問題であることがわかります。しかし、それがすべて魔法のように機能した場合
  • 次に、ICA-2を使用して、ボックスがIPを変更するたびに新しい証明書/キーのペアを生成し、Webサーバーが復旧したときに常に「有効な」キーチェーンを取得できるようにすることはできますか。
    • ICA-2-> SP-1

わかりました、あなたはとても賢いです

ほとんどの場合、私の複雑なソリューションは機能しませんが、機能した場合は素晴らしいでしょう。同様の問題がありましたか?あなたは何をしましたか?トレードオフは何でしたか?

4

1 に答える 1

8

基本的に、いいえ、あなたはこれをあなたが望む方法で行うことはできません。

あなたは中間のSSL権限ではなく、SSL権限になる余裕はありません。たとえそうだったとしても、すべてのブラウザでデフォルトで信頼されている、任意のドメインの新しい有効な証明書を作成するために必要なすべてのものを消費者に配布することを許可される方法はありません。これが可能であれば、システム全体が転倒することになります(まだ問題がないわけではありません)。

技術的にそれを妨げるものは何もありませんが、一般的に公的機関にIPアドレスに発行された証明書に署名させることはできません。

改ざん防止で保護された暗号化モジュール以外で秘密鍵を実際に配布している場合、デバイスはSSLで実際に保護されていないことに注意してください。デバイスの1つを持っている人は誰でも、秘密鍵をプルして(特にパスワードがない場合)、すべてのデバイスに対して有効な署名付きMITM攻撃を行うことができます。カジュアルな盗聴はお勧めしませんが、それだけです。

おそらく最善の選択肢は、有効なインターネットサブドメインの証明書を取得して署名し、そのサブドメインに応答するようにデバイスを取得することです。発信パス内のネットワークデバイスの場合は、壁に囲まれた庭のシステムがいくつ機能するかと同様に、ルーティングマジックを実行して、ドメインに応答させることができます。システムごとに「system432397652.example.com」のようなものを作成し、そのサブドメインに対応するボックスごとにキーを生成できます。ドメインへの直接IPアクセスリダイレクトを設定し、ボックスでリクエストをインターセプトするか、インターネット上でDNSトリックを実行して、ドメインが各クライアントの正しい内部IPに解決されるようにします。そのために単一目的のホストドメインを使用し、他のビジネスWebサイトと共有しないでください。

証明書にもっとお金を払っても、それが多かれ少なかれ合法になるわけではありません。会社がルートCAになるまでに、それは夜間の運用からはほど遠いものになっています。StartSSLは証明書ごとに課金されないため、StartSSLがニーズに適しているかどうかを確認する必要があります。

于 2011-08-25T20:48:55.537 に答える