高度な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
わかりました、あなたはとても賢いです
ほとんどの場合、私の複雑なソリューションは機能しませんが、機能した場合は素晴らしいでしょう。同様の問題がありましたか?あなたは何をしましたか?トレードオフは何でしたか?