Validar a configuração de HTTPS para o Cache Conectado da Microsoft no Linux

Este artigo fornece instruções sobre como validar o suporte HTTPS no Cache Conectado da Microsoft para Empresas e Cache conectado da Microsoft para empresas e instituições de ensino em execução no Linux.

Testar downloads de conteúdo HTTP e HTTPS

Antes de testar, você precisa identificar como os clientes se conectam ao seu servidor de Cache Conectado. Esse é o mesmo método de conexão que você configurou no SAN (Nome Alternativo para Entidade) do certificado durante a geração do CSR.

Importante

Substitua [mcc-connection] e [test-url] em todos os comandos abaixo

Para determinar o seguinte [mcc-connection]:

  • Se você usou -sanIp em seu CSR: Use o endereço IP (exemplo: 192.168.1.100)
  • Se você usou -sanDns em seu CSR: Use o nome do host (exemplo: mcc-server.contoso.com)

[test-url]é o caminho completo de um aplicativo Win32 do Intune de teste:ee344de8-d177-4720-86c1-a076581766f9/070a8fd4-79a7-42c8-b7c8-9883253bb01a/c7b1b825-88b2-4e66-9b15-ff5fe0374bc6.appxbundle.bin

Os seguintes comandos curl testam a recuperação de conteúdo HTTP e HTTPS:

  • Teste de HTTPS:

    curl -v -o /dev/null "https://[mcc-connection]/[test-url]" --include -H "host:swda01-mscdn.manage.microsoft.com"
    

    Resultado bem-sucedido esperado:

    * 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]
    
  • Teste HTTP:

    curl -v -o /dev/null "http://[mcc-connection]/[test-url]" --include -H "host:swda01-mscdn.manage.microsoft.com"
    

    Resultado bem-sucedido esperado:

    * Connected to [your-server] ([ip-address]) port 80 (#0)
    < HTTP/1.1 200 OK
    < Content-Length: [file-size]
    

Validação do lado do serviço

Execute os seguintes testes em seu computador host Linux:

  • Testar conectividade com wget:

    wget --server-response --spider --header="host: swda01-mscdn.manage.microsoft.com" "https://[mcc-connection]/[test-url]"
    

    Resultado esperado:HTTP/1.1 200 OK indica conexão HTTPS bem-sucedida.

  • Verifique os detalhes do certificado:

    echo | openssl s_client -connect [mcc-connection]:443 -servername [mcc-connection] 2>/dev/null | openssl x509 -text -noout
    

    Resultado esperado: Os detalhes do certificado, incluindo os valores de assunto, emissor e SAN, devem corresponder à sua configuração.

  • Verifique o status e os logs do contêiner:

    # 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)
    

    Resultado esperado: O contêiner deve estar no status "Ativo" e os logs devem mostrar a atividade TLS/SSL sem erros.

  • Testando o handshake SSL/TLS:

    Teste o handshake SSL/TLS sem validar o certificado:

        # 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
    

Validação do lado do cliente

Execute os seguintes comandos em um dispositivo cliente (não em seu computador host Linux).

Pré-requisito: Certifique-se de que o host seja direcionado por meio da política. Atualize o endereço IP do Cache Conectado (o valor da política "DOCacheHost") para o que for relevante para seu ambiente:

$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
  • Solicitar o download do aplicativo Teams do Cache Conectado via HTTPS:

    Add-AppxPackage "https://installer.teams.static.microsoft/production-windows-x64/25177.2002.3761.5185/MSTeams-x64.msix"
    

    Resultado esperado: O download é concluído sem erros e deve ser mais rápido do que os downloads típicos da Internet.

  • Verifique se o conteúdo está realmente sendo armazenado em cache (não apenas voltando para a CDN):

    Get-DeliveryOptimizationStatus | Select-Object DownloadMode, TotalBytesDownloaded, BytesFromCacheServer
    

    Resultado esperado:BytesFromCacheServer deve ser maior que 0, indicando cache bem-sucedido.

  • Se seus clientes Windows do servidor Linux de cache conectado, teste o seguinte nesses computadores:

    # 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]/"
    
  • Teste se a porta 443 está acessível:

        # 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]
    

Solução de problemas

Se uma etapa de validação falhar, use os testes a seguir para isolar a causa. Cada teste ignora uma parte do processo de conexão. Se o teste for bem-sucedido, você saberá que a parte ignorada é o problema.

Importante

Substitua [mcc-connection] e [test-url] em todos os comandos abaixo

Para determinar o seguinte [mcc-connection]:

  • Se você usou -sanIp em seu CSR: Use o endereço IP (exemplo: 192.168.1.100)
  • Se você usou -sanDns em seu CSR: Use o nome do host (exemplo: mcc-server.contoso.com)

[test-url]é o caminho completo de um aplicativo Win32 do Intune de teste:ee344de8-d177-4720-86c1-a076581766f9/070a8fd4-79a7-42c8-b7c8-9883253bb01a/c7b1b825-88b2-4e66-9b15-ff5fe0374bc6.appxbundle.bin

Erros de validação de certificado

Sintomas:SSL certificate problem, certificate subject name does not match

Teste de diagnostico: O comando a seguir usa o -k sinalizador para ignorar totalmente a validação do certificado. Isso diz ao curl para se conectar sem verificar o certificado do servidor. Dessa forma, você pode determinar qual é o problema: o certificado ou outra coisa.

curl -v -k -o /dev/null "https://[mcc-connection]/[test-url]" --include -H "host:swda01-mscdn.manage.microsoft.com"

Se o teste for bem-sucedido: O servidor e a rede estão funcionando corretamente. O problema é com o próprio certificado. Verifique se:

  • A configuração da SAN corresponde ao seu método de conexão (endereço IP ou nome de host)
  • O certificado raiz da autoridade de certificação está instalado no repositório confiável do cliente

Se o teste falhar: O problema não é o certificado. Consulte Erros de conexão abaixo.

Erros de revogação de certificado

Sintomas: Respostas ou tempos limite lentos de HTTPS

Teste de diagnostico: O comando a seguir usa o --ssl-no-revoke sinalizador para ignorar a verificação da lista de certificados revogados (CRL). Normalmente, o cliente entra em contato com o ponto de distribuição de CRL da autoridade de certificação para verificar se o certificado não foi revogado. Se esse ponto de extremidade estiver inacessível, ele causará lentidão ou tempos limite.

curl -v --ssl-no-revoke -o /dev/null "https://[mcc-connection]/[test-url]" --include -H "host:swda01-mscdn.manage.microsoft.com"

Se o teste for bem-sucedido: A conexão funciona quando a verificação de revogação é ignorada, o que confirma que o cliente não consegue acessar o ponto de distribuição de CRL. Verifique se o firewall permite acesso às URLs CRL listadas no certificado.

Se o teste falhar: O problema não é a verificação de revogação. Consulte Erros de conexão abaixo.

Erros de conexão

Sintomas:Connection refused, Could not resolve host

Se você não conseguir se conectar de forma alguma (ao contrário de se conectar, mas ver erros de certificado), o problema normalmente está relacionado à rede ou ao firewall.

Para erros de conexão HTTPS:

  • Verifique se as regras de firewall estão configuradas corretamente

  • Verifique se nenhum outro serviço está usando a porta 443:

    sudo ss -tulpn | grep :443
    
  • Verifique se o contêiner de Cache Conectado está em execução:

    sudo docker ps | grep mcc
    

Para erros de conexão HTTP: Verifique se o serviço de Cache Conectado está em execução e se a porta 80 está acessível

sudo ss -tulpn | grep :80

Para problemas de resolução de DNS: Verificar a resolução de nome de host e a conectividade de rede

nslookup [mcc-connection]
# OR
dig [mcc-connection]

Interferência de proxy corporativo

Sintomas: A validação do certificado falha apesar da configuração correta.

Solução: Verifique se o proxy corporativo não intercepta o tráfego HTTPS para o servidor de Cache Conectado. Considere desabilitar a inspeção TLS para o tráfego interno de Cache Conectado.

Recursos adicionais