Suporte HTTPS para referência do Linux para Cache Conectado da Microsoft

Este artigo fornece mais detalhes sobre o fluxo de configuração HTTPS do Linux no Cache Conectado.

Pré-requisitos

Métodos de conexão de cliente

Tente o seguinte para determinar o método de conexão apropriado com o servidor de Cache Conectado, para fins de configuração do suporte a HTTPS.

  • Verificar a configuração da política de Otimização de Entrega

    Se sua rede usar a Opção DHCP 235 para anunciar o servidor de Cache Conectado:

    resolvectl status | grep -A 10 "Link"
    

    Procure informações de domínio ou DNS fornecidas por DHCP que possam fazer referência ao seu servidor de Cache Conectado.

  • Verificar arquivos de configuração de rede

    Dependendo da distribuição do Linux, a configuração de rede pode conter referências estáticas de cache conectado:

    # For systems using NetworkManager
    cat /etc/NetworkManager/system-connections/*
    
    # For systems using netplan (Ubuntu 18.04+)
    cat /etc/netplan/*.yaml
    
    # For traditional /etc/network/interfaces
    cat /etc/network/interfaces
    
  • Testar a conectividade com o servidor de Cache Conectado

    O comando a seguir verifica a conectividade TCP com a porta 80 no servidor de Cache Conectado:

    nc -zv [insert-mcc-server-ip-or-hostname] 80
    

    Saída esperada:Connection to [server] 80 port [tcp/http] succeeded!

    Para obter informações mais detalhadas:

    curl -v -I http://[insert-mcc-server-ip-or-hostname]/
    

Disponibilidade da porta 443

  • Comando alternativo para marcar a disponibilidade da porta 443:

    sudo netstat -tulpn | grep :443
    
  • Verifique qual processo está usando a porta 443 no momento:

    sudo lsof -i :443
    

Detalhes de configuração do firewall

Use o seguinte para marcar se o firewall está interceptando o tráfego HTTPS para o servidor de Cache Conectado (por exemplo, por meio de inspeção TLS)

Distribuições comuns do Linux:

Ubuntu/Debian (UFW):

# Check firewall status
sudo ufw status

# Allow port 443
sudo ufw allow 443/tcp

# Reload firewall
sudo ufw reload

# Verify rule was added
sudo ufw status numbered

RHEL/CentOS/Fedora (firewalld):

# Check firewall status
sudo firewall-cmd --state

# Allow port 443 temporarily (until reboot)
sudo firewall-cmd --add-port=443/tcp

# Allow port 443 permanently
sudo firewall-cmd --permanent --add-port=443/tcp

# Reload firewall
sudo firewall-cmd --reload

# List all rules
sudo firewall-cmd --list-all

iptables (tradicional):

# Check current rules
sudo iptables -L -n -v

# Add rule for port 443
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Save rules (location varies by distribution)
# For Ubuntu/Debian:
sudo iptables-save | sudo tee /etc/iptables/rules.v4

# For RHEL/CentOS:
sudo service iptables save

Considerações sobre o SELinux

Se você estiver executando RHEL/CentOS/Fedora com o SELinux habilitado, talvez seja necessário configurar as políticas do SELinux:

# Check SELinux status
sestatus

# Allow HTTP/HTTPS traffic
sudo setsebool -P httpd_can_network_connect 1

# If using custom ports, add them to SELinux
sudo semanage port -a -t http_port_t -p tcp 443

Gerar CSR

Exemplos de parâmetros Scenario-Based

Examine exemplos de parâmetros baseados em cenário e faça edições ao seu generateCsr.sh comando de acordo:

Escritório único - somente endereço IP

Cenário: Filial pequena em que os clientes estão configurados para se conectar ao Cache Conectado usando um endereço IP estático (por exemplo, por meio da política DOCacheHost definida como "192.168.1.100").

./generateCsr.sh \
    -algo RSA \
    -keySizeOrCurve 2048 \
    -csrName "mcc-branch-office" \
    -subjectCommonName "192.168.1.100" \
    -subjectCountry "US" \
    -subjectState "TX" \
    -subjectOrg "Contoso Corp" \
    -sanIp "192.168.1.100"

Enterprise Standard - Nome do host DNS

Cenário: ambiente corporativo em que os clientes se conectam por meio de um nome de host padronizado (mcc-server.contoso.com).

./generateCsr.sh \
    -algo RSA \
    -keySizeOrCurve 4096 \
    -csrName "mcc-enterprise-prod" \
    -subjectCommonName "mcc-server.contoso.com" \
    -subjectCountry "US" \
    -subjectState "Washington" \
    -subjectOrg "Contoso Corporation" \
    -sanDns "mcc-server.contoso.com"

Ambiente de descoberta DHCP

Cenário: ambiente usando DHCP Opção 235 para descoberta de cache conectado em que os clientes podem se conectar usando o nome de host real do servidor ou o nome fornecido por DHCP.

./generateCsr.sh \
    -algo RSA \
    -keySizeOrCurve 2048 \
    -csrName "mcc-dhcp-discovery" \
    -subjectCommonName "cache-server.corporate.local" \
    -subjectCountry "US" \
    -subjectState "FL" \
    -subjectOrg "Corporate IT Services" \
    -sanDns "cache-server.corporate.local,mcc-auto.corporate.local,fileserver.corporate.local"

Ambiente híbrido - Conexões de cliente mistas

Cenário: ambiente misto durante a migração em que alguns clientes herdados ainda usam endereços IP, enquanto clientes mais novos usam nomes DNS. Abrange ambos os métodos de conexão.

./generateCsr.sh \
    -algo RSA \
    -keySizeOrCurve 2048 \
    -csrName "mcc-hybrid-migration" \
    -subjectCommonName "mcc-cache.contoso.com" \
    -subjectCountry "US" \
    -subjectState "CA" \
    -subjectOrg "Contoso Inc" \
    -sanDns "mcc-cache.contoso.com,cache.contoso.local" \
    -sanIp "10.0.1.50,192.168.100.10"

Vários sites com nomenclatura regional

Cenário: grande organização com vários nós de Cache Conectado usando convenção de nomenclatura consistente (formato mcc-region-site). Este exemplo é para um nó de datacenter de Seattle.

./generateCsr.sh \
    -algo RSA \
    -keySizeOrCurve 4096 \
    -csrName "mcc-seattle-dc1" \
    -subjectCommonName "mcc-sea-dc1.corp.contoso.com" \
    -subjectCountry "US" \
    -subjectState "Washington" \
    -subjectOrg "Contoso Corporation" \
    -sanDns "mcc-sea-dc1.corp.contoso.com,mcc-seattle.contoso.com"

Ambiente de Desenvolvimento/Teste

Cenário: Ambiente de desenvolvimento com requisitos de nomenclatura simplificados. Dá suporte a testes de host local e acesso à rede do laboratório.

./generateCsr.sh \
    -algo RSA \
    -keySizeOrCurve 2048 \
    -csrName "mcc-dev-lab" \
    -subjectCommonName "localhost" \
    -subjectCountry "US" \
    -subjectState "Dev" \
    -subjectOrg "IT Development" \
    -sanDns "localhost,mcc-dev.lab.local,devserver.local" \
    -sanIp "127.0.0.1,192.168.10.100,10.10.10.50"

Alta segurança com curva elíptica

Cenário: Organização preocupada com a segurança que requer criptografia ECC moderna para melhor desempenho e conformidade com os padrões de segurança mais recentes.

./generateCsr.sh \
    -algo EC \
    -keySizeOrCurve secp384r1 \
    -csrName "mcc-secure-prod" \
    -subjectCommonName "mcc-secure.defense.gov" \
    -subjectCountry "US" \
    -subjectState "VA" \
    -subjectOrg "Department of Defense" \
    -sanDns "mcc-secure.defense.gov"

Implantação de Máquina Virtual/Nuvem

Cenário: nó de cache conectado implantado em uma VM na nuvem ou máquina virtual com conectividade pública e privada. Os clientes locais se conectam por meio de IP privado/nome de host, enquanto os clientes baseados em nuvem podem usar o nome DNS público.

./generateCsr.sh \
    -algo RSA \
    -keySizeOrCurve 2048 \
    -csrName "mcc-cloud-hybrid" \
    -subjectCommonName "mcc-eastus.cloudapp.azure.com" \
    -subjectCountry "US" \
    -subjectState "WA" \
    -subjectOrg "Contoso Corporation" \
    -sanDns "mcc-eastus.cloudapp.azure.com,mcc-cloud.contoso.local,mcc-vm01.contoso.com" \
    -sanIp "10.0.1.10,172.16.0.50"

Ambiente de contêiner do Docker

Cenário: Cache conectado em execução no contêiner do Docker onde os clientes se conectam ao IP do computador host, mas o certificado precisa levar em conta a rede do contêiner.

./generateCsr.sh \
    -algo RSA \
    -keySizeOrCurve 2048 \
    -csrName "mcc-docker-host" \
    -subjectCommonName "mcc-docker.company.local" \
    -subjectCountry "US" \
    -subjectState "CA" \
    -subjectOrg "Company IT" \
    -sanDns "mcc-docker.company.local,localhost" \
    -sanIp "192.168.1.100,172.17.0.1,127.0.0.1"

Assinar CSR

Converter em tipo de arquivo .crt

  • Se você receber .cer:

    mv xxxx.cer xxxx.crt
    

    Ou com OpenSSL:

    openssl x509 -in xxxx.cer -out xxxx.crt
    
  • Se você receber .der:

    openssl x509 -inform DER -in xxxx.der -out xxxx.crt
    

Verificar o conteúdo do certificado

Após a conversão, verifique se o certificado está correto:

openssl x509 -in xxxx.crt -text -noout

Procure por:

  • Assunto: Deve corresponder ao seu assunto de RSC
  • Nome alternativo da entidade: Deve conter todas as SANs configuradas
  • Validade: Nem antes nem Nem depois de datas
  • Algoritmo de assinatura: Deve corresponder ao algoritmo escolhido (RSA, EC, etc.)

Recursos adicionais