この記事では、Linux で実行されている Microsoft Connected Cache for Enterprise ノードと Education ノードで HTTPS サポートを検証する方法について説明します。
HTTP および HTTPS コンテンツのダウンロードをテストする
テストする前に、クライアントが接続キャッシュ サーバーに接続する方法を特定する必要があります。 これは、CSR の生成中に証明書のサブジェクト代替名 (SAN) で構成したのと同じ接続方法です。
重要
以下のすべてのコマンドの [mcc-connection] と [test-url] を置き換えます
[mcc-connection]を決定するには:
-
CSR で
-sanIpを使用した場合: IP アドレス (例:192.168.1.100) を使用します -
CSR で
-sanDnsを使用した場合: ホスト名 (例:mcc-server.contoso.com) を使用します
[test-url]は、Win32 アプリケーションIntuneテストの完全なパスです。ee344de8-d177-4720-86c1-a076581766f9/070a8fd4-79a7-42c8-b7c8-9883253bb01a/c7b1b825-88b2-4e66-9b15-ff5fe0374bc6.appxbundle.bin"
次の curl コマンドは、HTTP と HTTPS の両方のコンテンツ取得をテストします。
HTTPS テスト:
curl -v -o /dev/null "https://[mcc-connection]/[test-url]" --include -H "host:swda01-mscdn.manage.microsoft.com"正常な出力が予想されます。
* Connected to [your-server] ([ip-address]) port 443 (#0) * TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 * Server certificate: [your-certificate-subject] < HTTP/1.1 200 OK < Content-Length: [file-size]HTTP テスト:
curl -v -o /dev/null "http://[mcc-connection]/[test-url]" --include -H "host:swda01-mscdn.manage.microsoft.com"正常な出力が予想されます。
* Connected to [your-server] ([ip-address]) port 80 (#0) < HTTP/1.1 200 OK < Content-Length: [file-size]
サービス側の検証
Linux ホスト コンピューターで次のテストを実行します。
wget を使用して接続をテストする:
wget --server-response --spider --header="host: swda01-mscdn.manage.microsoft.com" "https://[mcc-connection]/[test-url]"予期される結果:
HTTP/1.1 200 OKは、HTTPS 接続が成功したことを示します。証明書の詳細を確認します。
echo | openssl s_client -connect [mcc-connection]:443 -servername [mcc-connection] 2>/dev/null | openssl x509 -text -noout予想される結果: サブジェクト、発行者、SAN の値を含む証明書の詳細は、構成と一致する必要があります。
コンテナーの状態とログを確認します。
# Check if the Connected Cache container is running sudo docker ps | grep mcc # View recent container logs for HTTPS activity sudo docker logs --tail 50 $(sudo docker ps -q --filter ancestor=mcr.microsoft.com/mcc/linux)予想される結果: コンテナーは "Up" 状態である必要があり、ログにはエラーのない TLS/SSL アクティビティが表示されます。
SSL/TLS ハンドシェイクのテスト:
証明書を検証せずに SSL/TLS ハンドシェイクをテストします。
# Basic connection test openssl s_client -connect [mcc-server]:443 # Test with SNI (Server Name Indication) openssl s_client -connect [mcc-server]:443 -servername [hostname] # View certificate details during connection echo | openssl s_client -connect [mcc-server]:443 2>/dev/null | openssl x509 -noout -text
クライアント側の検証
(Linux ホスト マシンではなく) クライアント デバイスで次のコマンドを実行します。
前提: ホストがポリシーを使用して対象になっていることを確認します。 接続キャッシュ IP アドレス ("DOCacheHost" ポリシーの値) を、環境に関連するものに更新します。
$parentKeyPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\DeliveryOptimization"
if (!(Test-Path $parentKeyPath))
{
New-Item -Path $parentKeyPath -ItemType RegistryKey -Force -ErrorAction Stop | Out-Null
}
Set-ItemProperty -Path $parentKeyPath -Name "DOCacheHost" -Value "[mcc-connection]" -ErrorAction Stop
HTTPS 経由で接続キャッシュから Teams アプリのダウンロードを要求します。
Add-AppxPackage "https://statics.teams.cdn.office.net/production-windows-x64/enterprise/webview2/lkg/MSTeams-x64.msix"または
Add-AppxPackage "https://installer.teams.static.microsoft/production-windows-x64/25177.2002.3761.5185/MSTeams-x64.msix"予想される結果: ダウンロードはエラーなしで完了し、一般的なインターネットダウンロードよりも高速である必要があります。
コンテンツが実際にキャッシュされていることを確認します (CDN にフォールバックするだけでなく)。
Get-DeliveryOptimizationStatus | Select-Object DownloadMode, TotalBytesDownloaded, BytesFromCacheServer予期される結果:
BytesFromCacheServerは 0 より大きくする必要があります。キャッシュが成功したことを示します。
接続済みキャッシュ Linux サーバー Windows クライアントの場合は、これらのマシンから次をテストします。
# Test TCP connection Test-NetConnection -ComputerName [mcc-server] -Port 443 # Test HTTPS connection Invoke-WebRequest -Uri "https://[mcc-server]/" -UseBasicParsing # View certificate details $cert = [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} Invoke-WebRequest -Uri "https://[mcc-server]/"ポート 443 にアクセスできるかどうかをテストします。
# Using telnet telnet [mcc-server-ip] 443 # Using nc (netcat) nc -zv [mcc-server-ip] 443 # Using nmap (if installed) nmap -p 443 [mcc-server-ip]
トラブルシューティング
検証中に次の一般的なエラーが発生した場合は、次のトラブルシューティング方法を使用します。
重要
以下のすべてのコマンドで [mcc-connection] と [test-url] を置き換えるリマインダー
[mcc-connection]を決定するには:
-
CSR で
-sanIpを使用した場合: IP アドレス (例:192.168.1.100) を使用します -
CSR で
-sanDnsを使用した場合: ホスト名 (例:mcc-server.contoso.com) を使用します
[test-url]は、Win32 アプリケーションIntuneテストの完全なパスです。ee344de8-d177-4720-86c1-a076581766f9/070a8fd4-79a7-42c8-b7c8-9883253bb01a/c7b1b825-88b2-4e66-9b15-ff5fe0374bc6.appxbundle.bin"
証明書の検証エラー
症状:SSL certificate problem、 certificate subject name does not match
クイック テスト:
curl -v -k -o /dev/null "https://[mcc-connection]/[test-url]" --include -H "host:swda01-mscdn.manage.microsoft.com"
テストが成功した場合: 証明書に検証の問題があります。 次のことを確認します。
- SAN 構成が接続方法と一致する
- CA ルート証明書がクライアントの信頼されたストアにインストールされている
テストが失敗した場合: 以下の 「接続エラー」 を参照してください。
証明書失効エラー
症状: 低速な HTTPS 応答またはタイムアウト
クイック テスト:
curl -v --ssl-no-revoke -o /dev/null "https://[mcc-connection]/[test-url]" --include -H "host:swda01-mscdn.manage.microsoft.com"
テストが成功した場合: CA の証明書失効リスト (CRL) 配布ポイントに到達できません。 ファイアウォールで CRL URL へのアクセスが許可されていることを確認します。
テストが失敗した場合: 以下の 「接続エラー」 を参照してください。
接続エラー
症状:Connection refused、 Could not resolve host
HTTPS 接続エラーの場合:
ファイアウォール規則が正しく構成されていることを確認する
他のサービスでポート 443 が使用されていないことを確認します。
sudo ss -tulpn | grep :443接続キャッシュ コンテナーが実行されていることを確認します。
sudo docker ps | grep mcc
HTTP 接続エラーの場合: Connected Cache サービスが実行されており、ポート 80 にアクセスできることを確認する
sudo ss -tulpn | grep :80
DNS 解決の問題の場合: ホスト名の解決とネットワーク接続を確認する
nslookup [mcc-connection]
# OR
dig [mcc-connection]
企業プロキシの干渉
症状: 証明書の検証は、正しい構成にもかかわらず失敗します。
解決: 企業プロキシが接続キャッシュ サーバーへの HTTPS トラフィックをインターセプトしないようにします。 内部接続キャッシュ トラフィックの TLS 検査を無効にすることを検討してください。