Compatibilidad con HTTPS para la referencia de Linux para la caché conectada de Microsoft

En este artículo se proporciona más detalles sobre el flujo de configuración HTTPS de Linux en la caché conectada.

Requisitos previos

Métodos de conexión de cliente

Pruebe lo siguiente para determinar el método de conexión adecuado al servidor de caché conectada con el fin de configurar la compatibilidad con HTTPS.

  • Comprobación de la configuración de la directiva de optimización de distribución

    Si la red usa la opción DHCP 235 para anunciar el servidor de caché conectada:

    resolvectl status | grep -A 10 "Link"
    

    Busque información de DOMINIO o DNS proporcionada por DHCP que pueda hacer referencia al servidor de caché conectada.

  • Comprobación de los archivos de configuración de red

    En función de la distribución de Linux, la configuración de red puede contener referencias estáticas de caché conectada:

    # 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
    
  • Prueba de conectividad con el servidor de caché conectada

    El siguiente comando comprueba la conectividad TCP con el puerto 80 en el servidor de caché conectada:

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

    Salida esperada:Connection to [server] 80 port [tcp/http] succeeded!

    Para obtener información más detallada:

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

Disponibilidad del puerto 443

  • Comando alternativo para comprobar la disponibilidad del puerto 443:

    sudo netstat -tulpn | grep :443
    
  • Compruebe qué proceso usa actualmente el puerto 443:

    sudo lsof -i :443
    

Detalles de configuración del firewall

Use lo siguiente para comprobar si el firewall intercepta el tráfico HTTPS al servidor de caché conectada (por ejemplo, mediante la inspección de TLS).

Distribuciones comunes de 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

Consideraciones de SELinux

Si ejecuta RHEL/CentOS/Fedora con SELinux habilitado, es posible que tenga que configurar las directivas de 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

Generación de CSR

Ejemplos de parámetros de Scenario-Based

Revise los ejemplos de parámetros basados en escenarios y realice modificaciones en generateCsr.sh el comando en consecuencia:

Oficina única: solo dirección IP

Escenario: sucursal pequeña donde los clientes están configurados para conectarse a la caché conectada mediante una dirección IP estática (por ejemplo, a través de la directiva DOCacheHost establecida en "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: nombre de host DNS

Escenario: entorno empresarial en el que los clientes se conectan a través del nombre de host estandarizado (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"

Entorno de detección de DHCP

Escenario: entorno que usa la opción DHCP 235 para la detección de caché conectada, donde los clientes pueden conectarse mediante el nombre de host real del servidor o el nombre proporcionado 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"

Entorno híbrido: conexiones de cliente mixtas

Escenario: entorno mixto durante la migración en el que algunos clientes heredados siguen usando direcciones IP mientras que los clientes más recientes usan nombres DNS. Abarca ambos métodos de conexión.

./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"

Multisitio con nomenclatura regional

Escenario: organización grande con varios nodos de caché conectada mediante una convención de nomenclatura coherente (formato mcc-region-site). Este ejemplo es para un nodo de centro de datos 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"

Entorno de desarrollo y pruebas

Escenario: entorno de desarrollo con requisitos de nomenclatura relajados. Admite pruebas de localhost y acceso a la red de laboratorio.

./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 seguridad con curva elíptica

Escenario: una organización consciente de la seguridad que requiere criptografía ECC moderna para mejorar el rendimiento y el cumplimiento de los estándares de seguridad más recientes.

./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"

Implementación de máquinas virtuales o en la nube

Escenario: nodo de caché conectada implementado en una máquina virtual o máquina virtual en la nube con conectividad pública y privada. Los clientes del entorno local se conectan a través de ip/nombre de host privado, mientras que los clientes basados en la nube pueden usar el nombre 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"

Entorno de contenedor de Docker

Escenario: Caché conectada que se ejecuta en el contenedor de Docker, donde los clientes se conectan a la dirección IP del equipo host, pero el certificado debe tener en cuenta las redes de contenedor.

./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"

Firmar CSR

Conversión al tipo de archivo .crt

  • Si recibe .cer:

    mv xxxx.cer xxxx.crt
    

    O con OpenSSL:

    openssl x509 -in xxxx.cer -out xxxx.crt
    
  • Si recibe .der:

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

Comprobación del contenido del certificado

Después de la conversión, compruebe que el certificado es correcto:

openssl x509 -in xxxx.crt -text -noout

Busca:

  • Asunto: Debe coincidir con el asunto de CSR
  • Nombre alternativo del firmante: Debe contener todos los SAN configurados
  • Validez: Fechas no anteriores y no posteriores
  • Algoritmo de firma: Debe coincidir con el algoritmo elegido (RSA, EC, etc.)

Recursos adicionales