次の方法で共有


Linux 上の Microsoft Connected Cache の HTTPS 構成を検証する

この記事では、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 problemcertificate 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 refusedCould 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 検査を無効にすることを検討してください。

その他のリソース