本文提供有关连接缓存上的 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 等 ) 匹配