一、证书准备与上传
获取证书文件
免费证书(如阿里云、Let's Encrypt):下载包含.crt(证书)、.key(私钥)、chain.crt(证书链)的文件包
自签名证书(测试用):通过OpenSSL生成:
bash
Copy Code
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout server.key -out server.crt
```:ml-citation{ref="2" data="citationList"}
证书文件命名建议:避免中文和空格,如domain.crt、domain.key
上传证书到服务器
在Apache配置目录下创建专用文件夹(如C:\phpstudy\Apache\conf\ssl),存放上述三个文件
二、Apache配置调整
启用SSL模块
编辑Apache主配置文件httpd.conf(路径如C:\phpstudy\Apache\conf\httpd.conf):
apache
Copy Code
LoadModule ssl_module modules/mod_ssl.so # 取消行首注释
Include conf/extra/httpd-ssl.conf # 取消行首注释
若配置文件无httpd-ssl.conf引用,手动添加Include conf/extra/httpd-ssl.conf
修改SSL虚拟主机配置
编辑extra/httpd-ssl.conf,设置证书路径和域名:
apache
Copy Code
<VirtualHost _default_:443>
SSLEngine on
SSLCertificateFile "C:/phpstudy/Apache/conf/ssl/domain.crt"
SSLCertificateKeyFile "C:/phpstudy/Apache/conf/ssl/domain.key"
SSLCertificateChainFile "C:/phpstudy/Apache/conf/ssl/chain.crt"
DocumentRoot "C:/phpstudy/WWW" # 网站根目录
ServerName yourdomain.com:443 # 绑定域名
</VirtualHost>
路径分隔符使用正斜杠/,避免转义问题
三、PHP环境与端口设置
启用OpenSSL扩展
在phpStudy面板中进入PHP扩展及设置 → php扩展 → 勾选php_openssl
开放443端口
Windows防火墙放行443端口:
powershell
Copy Code
New-NetFirewallRule -DisplayName "HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow
云服务器(如阿里云)还需在安全组中添加443端口入站规则
四、服务重启与验证
重启Apache服务
在phpStudy面板中依次点击停止服务 → 启动服务,确保无报错
HTTPS访问测试
浏览器输入https://yourdomain.com,地址栏显示锁标志即为成功
使用命令行验证证书链:
bash
Copy Code
openssl s_client -connect yourdomain.com:443 -showcerts
检查输出中证书链完整性
异常排查:
证书路径错误:检查httpd-ssl.conf路径与实际是否一致,确保文件权限可读
端口冲突:执行netstat -ano | findstr :443确认端口未被其他进程占用
模块未加载:确认mod_ssl.so存在于Apache/modules目录且配置已启用
配置流程总结:
证书获取(CA或自签) → 2. 上传至SSL目录 → 3. 启用模块并修改配置文件 → 4. 开放端口 → 5. 重启服务并验证