Validar a Configuração https para a Cache Ligada da Microsoft no Linux

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

Testar transferências de conteúdo HTTP e HTTPS

Antes de testar, tem de identificar como os clientes se ligam ao servidor de Cache Ligada. Este é o mesmo método de ligação que configurou no Nome Alternativo do Requerente (SAN) do certificado durante a geração de CSR.

Importante

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

Para determinar o seu [mcc-connection]:

  • Se utilizou -sanIp no CSR: utilize o endereço IP (exemplo: 192.168.1.100)
  • Se utilizou -sanDns no CSR: utilize o nome do anfitrião (exemplo: mcc-server.contoso.com)

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

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

  • Teste HTTPS:

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

    Resultado esperado com êxito:

    * 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 esperado com êxito:

    * 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 no computador anfitrião Linux:

  • Testar a conectividade com o 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 uma ligaçã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 status e registos do contentor:

    # 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 contentor deve estar em "Up" status e os registos devem mostrar a atividade TLS/SSL sem erros.

  • Testar 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 num dispositivo cliente (não no computador anfitrião Linux).

Pré-requisito: Certifique-se de que o anfitrião é direcionado através da política. Atualize o endereço IP da Cache Ligada (o valor da política "DOCacheHost") para o que for relevante para o 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
  • Pedir a transferência da aplicação Teams a partir da Cache Ligada através de HTTPS:

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

    Resultado esperado: A transferência é concluída sem erros e deve ser mais rápida do que as transferências típicas da Internet.

  • Verifique se o conteúdo está realmente a ser colocado em cache (e não apenas a reverter para a CDN):

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

    Resultado esperado:BytesFromCacheServer deve ser superior a 0, o que indica que a colocação em cache foi bem-sucedida.

  • Se os clientes Windows da Cache Ligada Linux servidor, teste o seguinte a partir desses 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 um passo de validação falhar, utilize os seguintes testes para isolar a causa. Cada teste ignora uma parte do processo de ligação. Se o teste for bem-sucedido, sabe que a parte ignorada é o problema.

Importante

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

Para determinar o seu [mcc-connection]:

  • Se utilizou -sanIp no CSR: utilize o endereço IP (exemplo: 192.168.1.100)
  • Se utilizou -sanDns no CSR: utilize o nome do anfitrião (exemplo: mcc-server.contoso.com)

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

Erros de validação de certificados

Sintomas:SSL certificate problemcertificate subject name does not match

Teste de diagnóstico: O comando seguinte utiliza o -k sinalizador para ignorar totalmente a validação do certificado. Isto indica ao curl para se ligar sem verificar o certificado do servidor. Desta forma, pode determinar qual é o problema: o certificado ou outra coisa qualquer.

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 a funcionar corretamente. O problema é com o próprio certificado. Verifique se:

  • A configuração san corresponde ao método de ligação (endereço IP ou nome do anfitrião)
  • O certificado de raiz da AC está instalado no arquivo fidedigno do cliente

Se o teste falhar: O problema não é o certificado. Veja Erros de ligação abaixo.

Erros de revogação de certificados

Sintomas: Respostas de HTTPS lentas ou tempos limite

Teste de diagnóstico: O comando seguinte utiliza o --ssl-no-revoke sinalizador para ignorar a verificação da lista de revogação de certificados (CRL). Normalmente, o cliente contacta o ponto de distribuição crl da AC para verificar se o certificado não foi revogado. Se esse ponto final estiver inacessível, 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 ligação funciona quando a verificação de revogação é ignorada, o que confirma que o cliente não consegue aceder ao ponto de distribuição crl. Verifique se a firewall permite o acesso aos URLs de CRL listados no certificado.

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

Erros de ligação

Sintomas:Connection refusedCould not resolve host

Se não conseguir estabelecer ligação (por oposição a ligar, mas ver erros de certificado), o problema está normalmente relacionado com a rede ou a firewall.

Para erros de ligação HTTPS:

  • Verificar se as regras da firewall estão configuradas corretamente

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

    sudo ss -tulpn | grep :443
    
  • Verifique se o contentor da Cache Ligada está em execução:

    sudo docker ps | grep mcc
    

Para erros de ligação HTTP: Verifique se o serviço cache ligada 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 do nome do anfitrião e a conectividade de rede

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

Interferência do proxy empresarial

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

Solução: Certifique-se de que o proxy empresarial não interceta o tráfego HTTPS para o servidor de Cache Ligada. Considere desativar a inspeção TLS para o tráfego interno da Cache Ligada.

Recursos adicionais