web-dev-qa-db-ja.com

SSL証明書を受け入れる場合、受け入れるドメインを制限できますか?

多くの組織(企業、大学など)には、内部CAによって発行されたSSL証明書を使用する内部サイトとサービスがあり、デフォルトではブラウザーやオペレーティングシステムによって信頼されていません。 。通常、これらのサービスの潜在的なすべてのユーザー(スタッフ、学生など)は既知であるため、デバイスに内部CAのルート証明書をインストールするように指示できます。 (または、組織からユーザーに提供されるデバイスの場合、組織のIT部門がセットアップの一部としてルート証明書をインストールする場合があります。)

通常、このような内部CAによって発行された証明書を持つすべてのサービスは、1つまたは少なくともいくつかのドメイン(のサブドメイン)上にあります。それにもかかわらず、内部CAには通常、任意の証明書に署名できるルート証明書があります。 (つまり、ルート証明書は Name Constraints拡張子 自発的に制限する。)

このようなルート証明書をユーザーとしてインストールする場合、指定した一連のドメインに受け入れを制限できますか?彼らのサブドメイン?はいの場合、どのようにですか?ルート証明書をインストールしたいので、ブラウザに個々の証明書またはサービスすべてに例外を設けるように指示する必要はありませんが、組織が気付かれないように私のSSLトラフィックを外部(つまり、サードパーティ)のサービスやWebサイトに開かせないようにしたいのですが、ネットワーク経由でそれらにアクセスしているときに簡単に行うことができます。 (例: https://security.stackexchange.com/ にアクセスしてアクセスします。)


この質問のために、

  • クライアントデバイスを完全に制御できます(例: [〜#〜] byod [〜#〜] ラップトップまたはスマートフォン)
  • ルート証明書のインストール手順(ある場合)から逸脱することは許可されています
  • 組織やそのIT部門がネットワークから発信されたオープンな発信SSLトラフィックを遮断する立場にある一方で、そうすることは想定されておらず、事前の通知なしに行われることも想定されていません(つまり、ユーザーとしての私)組織のネットワークにいるときでも、その間にも、SSLトラフィックが開かれることはありません)

質問の「方法」の部分が重要な場合は、私はLinux(特にNixOS)でMozilla Firefoxを使用していますが、他のセットアップに適用できるソリューションにも興味があります。

3
das-g

いいえ。

少なくとも、楽しい方法ではなく、拡張性もありません。

技術的にはあなたが望むことは絶対に可能ですが、実際には、アクセス許可を通常のバイナリの「完全な無条件の信頼」/「まったく信頼しない」から両極端の間の何かに削減するインフラストラクチャは実際にはありません。

これは比較的単純なアイデアですが、名前の制約やその他の制約をCA(または証明書パス上の他の場所)に適用できるかどうかを知るインターフェースはありません。

あなたができることは手動でPIN事です。これは、証明書チェーンの一部であるエンドエンティティ証明書を受け入れる前に、証明書チェーンに期待することを正確にホワイトリストに登録する方法です。通常はアイデアPIN(explicitly whitelist))to the cert of the cert of the cert chain。-少なくとも、これはアイデアです。ここでも、優れたUIはありません。-しかし、過去にほぼ同じようなことを試みたFirefox拡張機能。ただし、非常に扱いにくく実用的ではないことがわかりました。また、まだサポートされているかどうかはわかりません。しかし、本当に本当に決まっている場合は、試してみてください。 「証明書パトロール」: http://patrol.psyced.org/

2
StackzOfZtuff