HTTPS Support for Linux reference for Microsoft Connected Cache

Este artigo fornece mais detalhes sobre o fluxo de configuração https do Linux na Cache Ligada.

Pré-requisitos

Métodos de ligação de cliente

Experimente o seguinte para determinar o método de ligação adequado ao servidor de Cache Ligada, para efeitos de configuração do suporte HTTPS.

  • Verificar a Configuração da Política de Otimização da Entrega

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

    resolvectl status | grep -A 10 "Link"
    

    Procure informações de domínio ou DNS fornecidos por DHCP que possam referenciar o servidor de Cache Ligada.

  • Verificar os ficheiros de configuração de rede

    Consoante a distribuição do Linux, a configuração de rede pode conter referências estáticas da Cache Ligada:

    # 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 ao servidor de Cache Ligada

    O comando seguinte verifica a conectividade TCP à porta 80 no servidor de Cache Ligada:

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

    Resultado esperado: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 que processo está atualmente a utilizar a porta 443:

    sudo lsof -i :443
    

Detalhes da configuração da firewall

Utilize o seguinte para marcar se a firewall estiver a intercetar tráfego HTTPS para o servidor de Cache Ligada (por exemplo, através da 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 do SELinux

Se estiver a executar RHEL/CentOS/Fedora com o SELinux ativado, poderá ter de configurar políticas 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 do Scenario-Based

Reveja exemplos de parâmetros baseados em cenários e faça edições ao comando generateCsr.sh em conformidade:

Escritório Único - Apenas Endereço IP

Cenário: Pequena sucursal onde os clientes estão configurados para ligar à Cache Ligada através de um endereço IP estático (por exemplo, através 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 Anfitrião DNS

Cenário: ambiente empresarial onde os clientes se ligam através do nome de anfitrião 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 Deteção DHCP

Cenário: ambiente que utiliza a Opção DHCP 235 para a deteção da Cache Ligada em que os clientes se podem ligar através do nome de anfitrião real do servidor ou do nome fornecido pelo 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 - Ligações de Cliente Misto

Cenário: ambiente misto durante a migração em que alguns clientes legados ainda utilizam endereços IP enquanto os clientes mais recentes utilizam nomes DNS. Abrange ambos os métodos de ligaçã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"

Múltiplos Sites com Nomenclatura Regional

Cenário: organização grande com vários nós de Cache Ligada através da convenção de nomenclatura consistente (formato mcc-region-site). Este exemplo destina-se a 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 flexíveis. Suporta testes de localhost e acesso à rede de 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 consciente da segurança que exige criptografia ECC moderna para um melhor desempenho e conformidade com normas 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"

Implementação da Cloud/Máquina Virtual

Cenário: Nó de Cache Ligada implementado numa VM na cloud ou numa máquina virtual com conectividade pública e privada. Os clientes do local ligam-se através do IP privado/nome do anfitrião, enquanto os clientes baseados na cloud podem utilizar 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 Contentor do Docker

Cenário: Cache Ligada em execução no contentor do Docker onde os clientes se ligam ao IP do computador anfitrião, mas o certificado tem de ter em conta as redes de contentores.

./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 ficheiro .crt

  • Se receber .cer:

    mv xxxx.cer xxxx.crt
    

    Ou com o OpenSSL:

    openssl x509 -in xxxx.cer -out xxxx.crt
    
  • Se 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

Procurar:

  • Assunto: Deve corresponder ao assunto do CSR
  • Nome Alternativo do Requerente: Deve conter todas as SANs configuradas
  • Validade: Datas Não Antes e Não Depois
  • Algoritmo de Assinatura: Deve corresponder ao algoritmo escolhido (RSA, EC, etc.)

Recursos adicionais