web-dev-qa-db-ja.com

企業ネットワークがSSL証明書を上書きする場合のベストプラクティスは何ですか?

私が勤務している会社では、SSL証明書を独自に発行した証明書で上書きし、インターネットへのトラフィックをより詳細に監視できるようにしています。また、対応するCAを証明書ストアにインストールしました。これが発生すると、ネットワークから送り返される証明書がそのプログラムの信頼できるCAではないため、さまざまなアプリケーションが機能しなくなりました。

一部のプログラム(Chrome and IE)など)が機能し、一部(Firefox、NPM、GIT)が機能しないのはなぜですか?

これはすべてこれを行う正しい方法ですか?

すべてのプログラムにこのCAを使用するように指示することがこの問題を処理する方法であるかどうか疑問に思っています。 CAに問題がないことをすべてのプログラムに知らせなければならないのは、非常に煩わしいようです。

主な質問は:

企業がSSL証明書を上書きしていることを考えると、OSレベルの証明書ストアに依存しない場合に物事を再び機能させるための最良の方法は何ですか?

  • これらのサービス/サイトへのSSL証明書を上書きしないようにITに指示するのでしょうか?
  • プロキシを使用するのでしょうか?
  • それは私がしていることをして、すべてのプログラムに上書きされたSSL証明書を許可するように言うことでしょうか?

これが、さまざまなプログラムを機能させるために私が行ったことです。

To get the Certificate so that you can import to other programs:    
 1. Open Certificates by running ”certmgr.msc” in cmd
 2. Go to “Trusted Root Certification Authorities” > “Certificates”
 3. Right click internet > Export
 4. Select “Base-64 encoded X.509 (.CER)”
 5. Save to c:/temp/internet.cer

To get Firefox working:    
 1. In the address bar, enter “about:preferences#privacy”
 2. “View Certificates” > “Authorities” > “Import”
 3. Select “c:/temp/internet.cer”
 4. Select the trust type of “Trust this CA to identify websites”, then click “Ok”

To get GIT working:    
 1. Open Cmd as admin
 2. git config --global http.sslCAInfo “c:/temp/internet.cer”
Do not run git config http.sslVerify "false"

To get NPM working:    
 1. Open Cmd as admin
 2. npm config set cafile “c:/temp/internet.cer”
Do not run npm config set strict-ssl false

To get Bower working:    
 1. Open Cmd as admin 
 2. cd %UserProfile%
 3. echo {"ca": "C:\\temp\\internet.cer","strict-ssl":false} > .bowerrc
5
Denis W

そのため、MiTMのセキュリティスキャンを実行するのに十分な規模の企業ネットワーク/セキュリティ部門があると思われる企業で働いています。

アプリケーションを機能させるための「ベストプラクティス」に仕事の継続が含まれていると仮定すると、まず通常のチャネルを通じてネットワーク/セキュリティ部門に連絡し、質問に対する企業の回答がすでに解決されているかどうかを尋ねる必要があります。

もちろん、これまでに使用した回避策を提供することもできます。これは、上司またはマネージャーが職務を遂行するために使用することを承認したツールを使用すると思います。

ただし、一般的には、さまざまな組織が作成したツールを使用しており、その多くは互いに信頼していません(特にオープンソースツールとMicrosoft)。また、その多くはまったく異なるツールチェーン(特にオープンソースツールとMicrosoft)を使用しています。 )。誰もが書き込むすべてのものが1つの真の証明書ストアを使用することを期待するのはなぜですか?

ベストプラクティスは次の3つのうちの1つになります。

  • 責任のある企業のIT部門は、承認されたツールを使用して問題を既に解決しており、リストに含まれています。彼らがあなたの面倒を見てくれます。
    • やがて。
    • 正しい書類で。
  • 担当の企業IT部門が、少なくとも1つのツールを禁止/承認していない(許可していない)。
    • すぐに削除
    • 承認された交換品を探す
    • または、いくつかのソフトウェアを承認してもらう
    • または別の仕事を探す
  • 担当の企業IT部門は、ツールを禁止していませんが、サポートもしていません
    • 回避策はそれぞれの問題です。
    • チームメイトがそれらを使用している場合は、バッチファイルまたは実行可能ファイルをパッケージ化して、一貫した自動化された方法で、可能な限り多くの構成更新を行います。
    • または、責任のある企業のIT部門がこれを支援することに関心があるかどうかを確認してください。これは、膨大な数の個別の構成ではなく、グループに同様の構成を用意することに関心があるためです。
6

オペレーティングシステムには、これを一元化しようとするルート証明書ストアがあります。問題は、いくつかのアプリケーションがそれを信頼しないことを選択することです。

Firefoxはデフォルトでストアを信頼しないことを選択します。これを行うには、security.enterprise_roots.enabledをtrueに設定します。これをすべてのユーザーに同時に展開するには、グループポリシーを介して、必要なロックされた構成ファイルを展開するなどの方法があります。

Git、bower、npmも同様の問題を抱えていますが、私の知る限り、ルートストアを信頼させる方法はありません。アプリケーションごとに信頼できる証明書ストアを変更または置き換える必要があります。これは、通常のドメイン管理ツールを介して可能です。

10
Hector

正直な答え-SSLインスペクションを管理しているチームに連絡し、言及したすべての開発ツール/サイトに対して行われた免除をリクエストしてください。これを、適用除外が行われないと生産性が低下し、ユーザーがSSLを無視する方法を探すように強制されるため、リスクプロファイルが増加するというビジネスケースでバックアップします。彼らがノーと言う場合-回避策のために失われた時間を記録し、それをチェーンに渡します。

ゲートウェイ(できますが、努力する価値はありません)とdontの場合、ネットワーク内でプロキシを使用してSSLインスペクションを通過することはできません。あなたはセキュリティ管理策を回避しようとしていますが、それは間違いなくあなたの会社の方針に反しています。

その他の注意事項:

  • JavaにはWindows OSとは別のトラストストアがあるため、TLSを使用するアプリケーションの証明書をここに追加する必要があります
  • LinuxはWindowsで更新されませんGPOこれが企業内で使用されている場合、手動で実行する必要があります
  • すでに述べたように、すべてのブラウザが下にあるOS証明書ストアを使用するわけではありません
  • すべての環境で使用されるように作成されたアプリケーションは、Windows証明書ストアを利用せず、代わりに不可知論的な方法を使用します。これは、gitおよびnpmで見つけられるものです。
1
McMatty

SSLの解除は、おそらくBlueCoatのようなプロキシで行われます。私が管理していたとき、管理者はユーザーエージェントをホワイトリストに登録したり、ドメイン全体(Microsoftなど)をホワイトリストに登録したり、ルールをバイパスしたりして、すべてを個別に機能させるためにかなりの作業と実験を行わなければなりませんでした。 SSLインターセプトを介してアプリを完全に機能させる場合があります。ネットワークセキュリティ管理者が仕事に長けている場合は、プロキシ設定とGPO=のようなものを組み合わせて、エンドユーザーの混乱を最小限に抑える必要があります。個人的には、 SSLをインターセプトし、従業員が自分自身を理解するために完全に壊れた多くのものを残しました。

0
downwardCorgi