如何正确安装配置phpEnv中的HTTPS证书?

2026-04-29 12:332阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计752个文字,预计阅读时间需要4分钟。

如何正确安装配置phpEnv中的HTTPS证书?

从2021年起,Chrome浏览器强制要求本地证书必须包含`subjectAltName`(SAN)扩展,并由本地信任的CA签发。手动生成的证书已包含SAN,即使缺少可信根证书,浏览器也会报错。正确做法是使用`mkcert`工具——它将帮助你生成证书,并将自建的根证书自动安装进系统及浏览器信任库。

用 mkcert 生成 localhost 可信证书

先确保已安装 mkcert(Windows 上推荐用 Chocolatey:choco install mkcert;macOS 用 brew install mkcert)。

  • 运行 mkcert -install —— 这步必须做,否则浏览器不认
  • 再运行 mkcert localhost 127.0.0.1 ::1,会生成两个文件:localhost+2.pem(证书)和 localhost+2-key.pem(私钥)
  • 把这两个文件复制到 phpEnvpacheconfssl 目录下(若无此目录请手动创建)

修改 phpEnv 的 Apache 配置启用 HTTPS

phpEnv 的 Apache 默认不启用 SSL 模块,也不监听 443 端口。你需要改两处配置文件:

  • 打开 phpEnvpacheconfhttpd.conf,取消以下两行的注释:
    LoadModule ssl_module modules/mod_ssl.so
    Include conf/extra/httpd-ssl.conf
  • 打开 phpEnvpacheconfextrahttpd-ssl.conf,找到 <VirtualHost _default_:443> 块,修改关键项:
    ServerName localhost:443
    DocumentRoot "E:/phpEnv/www"(按你实际项目路径填)
    SSLCertificateFile "E:/phpEnv/apache/conf/ssl/localhost+2.pem"
    SSLCertificateKeyFile "E:/phpEnv/apache/conf/ssl/localhost+2-key.pem"
  • 确保 Listen 443httpd.conf 中未被注释

改完后重启 phpEnv 的 Apache 服务。首次访问 https://localhost 时,Chrome 仍可能弹“不安全”警告——点“高级”→“继续前往 localhost(不安全)”即可,仅第一次需要,之后就信任了。

立即学习“PHP免费学习笔记(深入)”;

PHP 代码里怎么判断当前是 HTTPS

Apache 启用 SSL 后,$_SERVER['HTTPS'] 通常会是 "on",但 phpEnv 的 Apache 若未显式设置,有时会为空。最稳妥的写法是:

if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') { // 当前是 HTTPS } elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { // 有反向代理时备用判断(phpEnv 一般不用) }

注意:别依赖 $_SERVER['SERVER_PORT'] === '443',因为端口可被代理或重写,不可靠。

真正容易被忽略的是私钥权限和路径写法:Windows 下 Apache 对私钥文件路径中的反斜杠 很敏感,务必统一用正斜杠 / 或双反斜杠 \;另外,如果证书路径写错或文件不存在,Apache 启动会静默失败——此时要看 phpEnvpachelogserror.log 里的具体报错,而不是只看界面是否启动成功。

标签:phpenvPHPps

本文共计752个文字,预计阅读时间需要4分钟。

如何正确安装配置phpEnv中的HTTPS证书?

从2021年起,Chrome浏览器强制要求本地证书必须包含`subjectAltName`(SAN)扩展,并由本地信任的CA签发。手动生成的证书已包含SAN,即使缺少可信根证书,浏览器也会报错。正确做法是使用`mkcert`工具——它将帮助你生成证书,并将自建的根证书自动安装进系统及浏览器信任库。

用 mkcert 生成 localhost 可信证书

先确保已安装 mkcert(Windows 上推荐用 Chocolatey:choco install mkcert;macOS 用 brew install mkcert)。

  • 运行 mkcert -install —— 这步必须做,否则浏览器不认
  • 再运行 mkcert localhost 127.0.0.1 ::1,会生成两个文件:localhost+2.pem(证书)和 localhost+2-key.pem(私钥)
  • 把这两个文件复制到 phpEnvpacheconfssl 目录下(若无此目录请手动创建)

修改 phpEnv 的 Apache 配置启用 HTTPS

phpEnv 的 Apache 默认不启用 SSL 模块,也不监听 443 端口。你需要改两处配置文件:

  • 打开 phpEnvpacheconfhttpd.conf,取消以下两行的注释:
    LoadModule ssl_module modules/mod_ssl.so
    Include conf/extra/httpd-ssl.conf
  • 打开 phpEnvpacheconfextrahttpd-ssl.conf,找到 <VirtualHost _default_:443> 块,修改关键项:
    ServerName localhost:443
    DocumentRoot "E:/phpEnv/www"(按你实际项目路径填)
    SSLCertificateFile "E:/phpEnv/apache/conf/ssl/localhost+2.pem"
    SSLCertificateKeyFile "E:/phpEnv/apache/conf/ssl/localhost+2-key.pem"
  • 确保 Listen 443httpd.conf 中未被注释

改完后重启 phpEnv 的 Apache 服务。首次访问 https://localhost 时,Chrome 仍可能弹“不安全”警告——点“高级”→“继续前往 localhost(不安全)”即可,仅第一次需要,之后就信任了。

立即学习“PHP免费学习笔记(深入)”;

PHP 代码里怎么判断当前是 HTTPS

Apache 启用 SSL 后,$_SERVER['HTTPS'] 通常会是 "on",但 phpEnv 的 Apache 若未显式设置,有时会为空。最稳妥的写法是:

if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') { // 当前是 HTTPS } elseif (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { // 有反向代理时备用判断(phpEnv 一般不用) }

注意:别依赖 $_SERVER['SERVER_PORT'] === '443',因为端口可被代理或重写,不可靠。

真正容易被忽略的是私钥权限和路径写法:Windows 下 Apache 对私钥文件路径中的反斜杠 很敏感,务必统一用正斜杠 / 或双反斜杠 \;另外,如果证书路径写错或文件不存在,Apache 启动会静默失败——此时要看 phpEnvpachelogserror.log 里的具体报错,而不是只看界面是否启动成功。

标签:phpenvPHPps