apache 2.4.37+ 默认禁用ssl/tls压缩以防crime攻击,所谓“多端口+ssl”实为配置多个https虚拟主机,需分别监听不同端口(如4433、4443)并配对应证书,改端口是解决windows下443被占用的首要步骤。

不能直接“启用SSL压缩”——Apache 2.4.37+ 已默认禁用 SSL/TLS 压缩(因 CRIME 攻击风险),XAMPP 自带的 Apache 版本基本都已移除该功能;所谓“多端口 + SSL”本质是配多个 HTTPS 虚拟主机,每个监听不同端口(如 443、4433、4443),而非压缩。
为什么改端口是绕不开的第一步
Windows 下 443 端口常被系统服务(如 Windows Update Medic Service、Skype、IIS)或后台程序占用,netstat -ano | findstr :443 查到 PID 后,在任务管理器「详细信息」里右键结束进程,往往治标不治本——重启后可能又占。更稳妥的做法是让 Apache 监听非标准端口,比如 4433 或 4443,避免反复冲突。
- 改
httpd-ssl.conf里的Listen 443→Listen 4433 - 同时改同一文件中
<virtualhost _default_:443></virtualhost>→<virtualhost _default_:4433></virtualhost> - 确保
httpd.conf中已启用模块:LoadModule ssl_module modules/mod_ssl.so和Include conf/extra/httpd-ssl.conf前面没#
配两个 HTTPS 站点需两套 VirtualHost + 两组证书路径
Apache 不允许同一 IP+端口绑定多个 SSLCertificateFile;所以要实现「多端口 HTTPS」,必须为每个端口写独立的 <virtualhost></virtualhost> 块,并指向各自的证书文件。例如:
Listen 4433
Listen 4443
<virtualhost _default_:4433>
DocumentRoot "D:/xampp/htdocs/site-a"
ServerName site-a.local
SSLEngine on
SSLCertificateFile "D:/certs/site-a.crt"
SSLCertificateKeyFile "D:/certs/site-a.key"
SSLCertificateChainFile "D:/certs/site-a-chain.pem"
</virtualhost><virtualhost _default_:4443>
DocumentRoot "D:/xampp/htdocs/site-b"
ServerName site-b.local
SSLEngine on
SSLCertificateFile "D:/certs/site-b.crt"
SSLCertificateKeyFile "D:/certs/site-b.key"
SSLCertificateChainFile "D:/certs/site-b-chain.pem"
</virtualhost>
- 证书路径必须用正斜杠
/或双反斜杠\,单反斜杠会解析失败 - 自签名证书浏览器会报
NET::ERR_CERT_AUTHORITY_INVALID,若用于小程序或 WebView,需提前安装根证书或改用 Let’s Encrypt 等可信证书 - 修改完必须重启 Apache,仅重载配置(
xampp-control.exe上的 Restart)有时不生效
hosts 文件和浏览器访问的实际限制
Windows 的 C:WindowsSystem32driversetchosts 只能做域名→IP 映射,不能指定端口。所以你加了 127.0.0.1 site-a.local,浏览器访问时仍需显式写端口:https://site-a.local:4433。省略端口会强制走 443,必然失败。
- 别指望
https://site-a.local自动落到 4433 —— 这是协议层硬编码行为,无法绕过 - 如果想免端口,唯一办法是把其中一个站点放回 443(并确保该端口空闲),其余仍用高位端口
- Chrome / Edge 对自签名 HTTPS 的拦截越来越激进,首次访问可能连「高级→继续访问」入口都被隐藏,需在地址栏输入
thisisunsafe(仅限当前页面临时绕过)
真正麻烦的不是配几个端口,而是每新增一个 HTTPS 站点,就得准备一套合法证书 + 检查路径权限 + 核对 SSLCertificateKeyFile 是否与 .crt 匹配;而「SSL 压缩」这个需求本身在现代 Apache 里既不可控也不该开启——它早已不是性能优化项,而是安全弃用项。











