XAMPP环境本地主机子域名SSL证书无法正常工作问题咨询
解决XAMPP本地子域名SSL无法正常工作的问题
没错,你的问题根源就是只给localhost生成了SSL证书——这个证书的域名匹配规则里不包含phpcode.localhost,Chrome会因为域名不匹配判定证书无效,所以子域名的HTTPS访问失败。不用慌,这个问题完全可以通过重新生成包含子域名的证书+调整Apache配置解决,下面是具体步骤:
一、重新生成包含子域名的自签名SSL证书
你有两种方式生成支持多域名的证书:
方式1:修改OpenSSL配置文件(适合需要添加多个子域名的场景)
- 找到XAMPP中OpenSSL的配置文件,路径一般是
C:\server\xampp\apache\conf\openssl.cnf - 打开文件后,找到
[v3_req]或[v3_ca]区块,添加一行配置:
这里可以添加所有需要支持的本地域名,用逗号分隔。subjectAltName = DNS:localhost, DNS:phpcode.localhost - 打开XAMPP的Shell(控制面板里的Shell按钮),执行以下命令生成证书:
填写信息时,Common Name可以填openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt -config "C:\server\xampp\apache\conf\openssl.cnf"localhost,其他信息可以随便填。 - 生成的
server.key和server.crt会在当前Shell目录(一般是XAMPP根目录),把它们移动到Apache的conf目录(比如C:\server\xampp\apache\conf)覆盖原来的证书(记得备份旧证书)。
方式2:直接用命令行指定多域名(快捷方式)
如果不想修改配置文件,直接在XAMPP Shell里执行这条命令即可:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt -subj "/CN=localhost" -addext "subjectAltName = DNS:localhost, DNS:phpcode.localhost"
这条命令直接在生成时指定了要包含的域名,生成后同样把证书移动到Apache的conf目录。
二、更新Apache虚拟主机配置
确保你的子域名虚拟主机配置(一般在httpd-vhosts.conf文件里)正确指定了SSL证书:
<VirtualHost *:443> DocumentRoot "C:\Files\PHPCode" ServerName phpcode.localhost SSLEngine on SSLCertificateFile "C:\server\xampp\apache\conf\server.crt" SSLCertificateKeyFile "C:\server\xampp\apache\conf\server.key" # 可选:添加其他SSL相关配置,比如SSLProtocol等 </VirtualHost>
同时确认主域名localhost的443端口配置也使用了新的证书。
三、必要的检查步骤
- 确保Windows的
hosts文件(路径C:\Windows\System32\drivers\etc\hosts)里添加了映射:127.0.0.1 localhost 127.0.0.1 phpcode.localhost - 确认XAMPP的Apache已经启用了
ssl_module(在XAMPP控制面板的Apache模块列表里,ssl项要打勾)。 - 重启Apache服务,然后在Chrome里重新导入新的
server.crt到受信任的根证书颁发机构(因为是自签名证书,需要手动信任)。
做完这些,https://phpcode.localhost应该就能正常通过SSL访问了。
内容的提问来源于stack exchange,提问作者PapaLazarou
相关产品推荐
相关产品推荐

