私が勤務している会社では、SSL証明書を独自に発行した証明書で上書きし、インターネットへのトラフィックをより詳細に監視できるようにしています。また、対応するCAを証明書ストアにインストールしました。これが発生すると、ネットワークから送り返される証明書がそのプログラムの信頼できるCAではないため、さまざまなアプリケーションが機能しなくなりました。
一部のプログラム(Chrome and IE)など)が機能し、一部(Firefox、NPM、GIT)が機能しないのはなぜですか?
これはすべてこれを行う正しい方法ですか?
すべてのプログラムにこのCAを使用するように指示することがこの問題を処理する方法であるかどうか疑問に思っています。 CAに問題がないことをすべてのプログラムに知らせなければならないのは、非常に煩わしいようです。
主な質問は:
企業がSSL証明書を上書きしていることを考えると、OSレベルの証明書ストアに依存しない場合に物事を再び機能させるための最良の方法は何ですか?
これが、さまざまなプログラムを機能させるために私が行ったことです。
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
そのため、MiTMのセキュリティスキャンを実行するのに十分な規模の企業ネットワーク/セキュリティ部門があると思われる企業で働いています。
アプリケーションを機能させるための「ベストプラクティス」に仕事の継続が含まれていると仮定すると、まず通常のチャネルを通じてネットワーク/セキュリティ部門に連絡し、質問に対する企業の回答がすでに解決されているかどうかを尋ねる必要があります。
もちろん、これまでに使用した回避策を提供することもできます。これは、上司またはマネージャーが職務を遂行するために使用することを承認したツールを使用すると思います。
ただし、一般的には、さまざまな組織が作成したツールを使用しており、その多くは互いに信頼していません(特にオープンソースツールとMicrosoft)。また、その多くはまったく異なるツールチェーン(特にオープンソースツールとMicrosoft)を使用しています。 )。誰もが書き込むすべてのものが1つの真の証明書ストアを使用することを期待するのはなぜですか?
ベストプラクティスは次の3つのうちの1つになります。
オペレーティングシステムには、これを一元化しようとするルート証明書ストアがあります。問題は、いくつかのアプリケーションがそれを信頼しないことを選択することです。
Firefoxはデフォルトでストアを信頼しないことを選択します。これを行うには、security.enterprise_roots.enabledをtrueに設定します。これをすべてのユーザーに同時に展開するには、グループポリシーを介して、必要なロックされた構成ファイルを展開するなどの方法があります。
Git、bower、npmも同様の問題を抱えていますが、私の知る限り、ルートストアを信頼させる方法はありません。アプリケーションごとに信頼できる証明書ストアを変更または置き換える必要があります。これは、通常のドメイン管理ツールを介して可能です。
正直な答え-SSLインスペクションを管理しているチームに連絡し、言及したすべての開発ツール/サイトに対して行われた免除をリクエストしてください。これを、適用除外が行われないと生産性が低下し、ユーザーがSSLを無視する方法を探すように強制されるため、リスクプロファイルが増加するというビジネスケースでバックアップします。彼らがノーと言う場合-回避策のために失われた時間を記録し、それをチェーンに渡します。
ゲートウェイ(できますが、努力する価値はありません)とdontの場合、ネットワーク内でプロキシを使用してSSLインスペクションを通過することはできません。あなたはセキュリティ管理策を回避しようとしていますが、それは間違いなくあなたの会社の方針に反しています。
その他の注意事項:
SSLの解除は、おそらくBlueCoatのようなプロキシで行われます。私が管理していたとき、管理者はユーザーエージェントをホワイトリストに登録したり、ドメイン全体(Microsoftなど)をホワイトリストに登録したり、ルールをバイパスしたりして、すべてを個別に機能させるためにかなりの作業と実験を行わなければなりませんでした。 SSLインターセプトを介してアプリを完全に機能させる場合があります。ネットワークセキュリティ管理者が仕事に長けている場合は、プロキシ設定とGPO=のようなものを組み合わせて、エンドユーザーの混乱を最小限に抑える必要があります。個人的には、 SSLをインターセプトし、従業員が自分自身を理解するために完全に壊れた多くのものを残しました。