グローバル セキュリティで保護されたアクセストランスポート層のセキュリティ検査エラーのトラブルシューティング

この記事では、トランスポート層セキュリティ (TLS) 検査ポリシーを展開するときの一般的なトラブルシューティング シナリオについて説明します。

証明書の問題: ローカル発行者証明書を取得できません

このエラーは、Git や Python などの開発者ツールが既定でオペレーティング システムの証明書ストアを使用していないために発生します。 代わりに、独自の証明書ストアを保持し、TLS 検査証明書を認識しません。

Git のトラブルシューティング

Git に Windows の証明書ストアを使用するように指示できます。

git config --global http.sslbackend schannel

または、Git の証明機関バンドルにカスタム TLS 検査ルート証明書を追加して、Git が内部証明機関を信頼するようにすることもできます。

$certPath = "./myTLSInspectionRootCA.crt"
$gitCAPath = git config --get http.sslcainfo
if ($gitCAPath) {
    Get-Content $certPath | Add-Content -Path $gitCAPath
    Write-Host "Certificate appended to Git CA bundle"
} else {
    Write-Host "Git CA bundle path not found"
}

Python のトラブルシューティング

Azure CLI などの Python ベースのツールは、正しい証明機関がないと失敗します。 Python が Windows 証明書ストアを信頼できるように、 pip-system-certs をインストールできます。

Azure CLI

"C:\Program Files\Microsoft SDKs\Azure\CLI2\python.exe" -m pip install pip-system-certs

システム Python

python -m pip install pip-system-certs

または、Python の CA バンドルにカスタム TLS 検査ルート証明書を追加して、Python が内部証明機関を信頼するようにすることもできます。

$certPath = "./myTLSInspectionRootCA.crt"
$pythonCertPath = python -c "import certifi; print(certifi.where())"
Get-Content $certPath | Add-Content -Path $pythonCertPath
Write-Host "Certificate appended to Python's CA bundle"

Docker のトラブルシューティング

TLS 検査証明書が信頼されていない場合、Docker コンテナーは TLS 接続に失敗する可能性があります。 Dockerfile に次のコマンドを追加して、証明書を Docker の信頼された証明書の一覧に追加します。

Debian または Ubuntu ベースのイメージ

COPY myTLSInspectionRootCA.crt /usr/local/share/ca-certificates/
RUN update-ca-certificates

Alpineに基づくイメージ

COPY myTLSInspectionRootCA.crt /usr/local/share/ca-certificates/
RUN apk update && apk add ca-certificates && update-ca-certificates

Node のトラブルシューティング

Node.js では、オペレーティング システムの証明書ストアは既定では使用されません。 次のいずれかの方法を使用して、システム証明書ストアを使用するように Node.js を構成できます。

コマンド ライン

アプリケーションの実行時には、 --use-system-ca フラグを使用します。 <your-app>.jsをアプリケーションのエントリ ポイント (index.jsやserver.jsなど) に置き換えます。

node --use-system-ca <your-app>.js

環境変数 (単一セッション)

1 つのコマンドの変数をインラインで設定します。

NODE_USE_SYSTEM_CA=1 node <your-app>.js

環境変数 (すべての Node.js アプリ)

すべての Node.js アプリケーションに設定を永続的に適用するには、 NODE_USE_SYSTEM_CA を永続的な環境変数として設定します。

現在のユーザーの場合:

setx NODE_USE_SYSTEM_CA 1

マシン上のすべてのユーザー (管理者特権が必要):

setx NODE_USE_SYSTEM_CA 1 /M

いずれかのコマンドを実行した後、開いているターミナルを再起動して変更を有効にします。 すべての Node.js プロセスは、システム証明書ストアを自動的に使用します。

アプリケーションがモバイル プラットフォームで動作しない

証明書のピン留めにより TLS 検査が有効になっていると、モバイル アプリケーションが失敗する可能性があります。この場合、アプリケーションは特定の証明書のみを信頼するように制限されます。

トラブルシューティングの手順

TLS 検査からアプリケーションの宛先 FQDN を除外する TLS バイパス規則を作成します。 詳細な手順については、「 トランスポート層セキュリティ検査ポリシーの構成」を参照してください。

内部証明書が既に存在する

従来の TLS 構成を使用しているプレビューのお客様の場合、証明書署名要求 (CSR) を作成すると、次のエラーが表示されることがあります。 Cannot create external certificate, an internal certificate already exists for tenant.

トラブルシューティングの手順

この問題を解決するには、次の手順を実行します。

  1. グローバル セキュリティで保護されたアクセス管理者として、カスタム TLS 検査設定を使用して Microsoft Entra 管理センターにサインインします。
  2. グローバル セキュリティで保護されたアクセス>Settings>Session 管理に移動します。
  3. [ TLS 検査 ] タブを選択します。
  4. 証明書 URL を選択して削除します。
  5. 保存 を選択します。