通过


Microsoft连接缓存的 LINUX 的 HTTPS 支持参考

本文提供有关连接缓存上的 Linux HTTPS 设置流的更多详细信息。

必备条件

客户端连接方法

尝试以下作来确定与连接的缓存服务器的相应连接方法,以便设置 HTTPS 支持。

  • 检查传递优化策略配置

    如果网络使用 DHCP 选项 235 播发连接的缓存服务器:

    resolvectl status | grep -A 10 "Link"
    

    查找 DHCP 提供的可能引用连接的缓存服务器的 DNS 或域信息。

  • 检查网络配置文件

    根据 Linux 分发版,网络配置可能包含静态连接缓存引用:

    # 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
    
  • 测试与连接的缓存服务器的连接

    以下命令检查与连接的缓存服务器上的端口 80 的 TCP 连接:

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

    预期输出:Connection to [server] 80 port [tcp/http] succeeded!

    若要获取更多详细信息,请执行以下工作:

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

端口 443 可用性

  • 检查端口 443 可用性的替代命令:

    sudo netstat -tulpn | grep :443
    
  • 检查哪个进程当前正在使用端口 443:

    sudo lsof -i :443
    

防火墙配置详细信息

使用以下命令检查防火墙是否 (通过 TLS 检查)

常见的 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 (防火墙) :

# 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 (传统) :

# 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

SELinux 注意事项

如果运行的是启用了 SELinux 的 RHEL/CentOS/Fedora,则可能需要配置 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

生成 CSR

Scenario-Based 参数示例

查看基于方案的参数示例,并相应地对命令进行编辑 generateCsr.sh

单个 Office - 仅限 IP 地址

场景:小型分支机构,其中客户端配置为使用静态 IP 地址 (连接到连接的缓存,例如,通过 DOCacheHost 策略设置为“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"

企业Standard - DNS 主机名

场景:企业环境,其中客户端通过标准化主机名 (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"

DHCP 发现环境

场景:使用 DHCP 选项 235 进行连接缓存发现的环境,其中客户端可以使用服务器的实际主机名或 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"

混合环境 - 混合客户端连接

场景:迁移期间混合环境,其中某些旧版客户端仍使用 IP 地址,而较新的客户端使用 DNS 名称。 涵盖这两种连接方法。

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

具有区域命名的多站点

方案:具有多个连接缓存节点的大型组织使用一致的命名约定 (mcc-region-site 格式) 。 此示例适用于西雅图数据中心节点。

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

开发/测试环境

方案:具有宽松命名要求的开发环境。 支持 localhost 测试和实验室网络访问。

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

椭圆曲线的高安全性

场景:安全意识强的组织需要新式 ECC 加密,以提高性能和符合较新的安全标准。

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

云/虚拟机部署

方案:部署在具有公共和专用连接的云 VM 或虚拟机上的连接缓存节点。 来自本地的客户端通过专用 IP/主机名进行连接,而基于云的客户端可以使用公共 DNS 名称。

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

Docker 容器环境

场景:连接缓存在 Docker 容器中运行,其中客户端连接到主机的 IP,但证书需要考虑容器网络。

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

签署 CSR

转换为 .crt 文件类型

  • 如果收到 .cer

    mv xxxx.cer xxxx.crt
    

    或者使用 OpenSSL:

    openssl x509 -in xxxx.cer -out xxxx.crt
    
  • 如果收到 .der

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

验证证书内容

转换后,验证证书是否正确:

openssl x509 -in xxxx.crt -text -noout

查找:

  • 主题: 应与 CSR 主题匹配
  • 使用者可选名称: 应包含所有配置的 SAN
  • 有效性: 不早于日期和日期之后
  • 签名算法: 应与所选算法 (RSA、EC 等 ) 匹配

其他资源