商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > XAMPP如何开启HTTPS访问 XAMPP生成自签名SSL证书

XAMPP如何开启HTTPS访问 XAMPP生成自签名SSL证书

  发布于2026-07-06 阅读(0)

扫一扫,手机访问

先说一个核心结论:你捣鼓了半天XAMPP,HTTPS 还是打不开?十有八九是 Apache 的 ssl_module 模块根本没启用。这事儿看着小,但坑不少。

往下看,从根儿上解决问题。

XAMPP如何开启HTTPS访问 XAMPP生成自签名SSL证书

确认 Apache 的 ssl_module 是否已启用

直接访问 https://localhost 失败,或者莫名其妙跳转到 XAMPP 控制面板首页——大概率是模块根本没加载。怎么检查?打开 XAMPP\apache\conf\httpd.conf,重点看这两行有没有被注释掉(行首有 # 就是被注释了):

  • LoadModule ssl_module modules/mod_ssl.so
  • Include conf/extra/httpd-ssl.conf

光把 mod_ssl.so 那行解开还不够,httpd-ssl.conf 这个配置文件也必须同步启用。否则,Apache 启动不会报错,但所有 HTTPS 请求都会被悄无声息地丢弃——这就是很多人“配了却打不开”的头号原因。

用 XAMPP 自带 openssl 生成自签名证书

千万别折腾第三方 OpenSSL,也别从网上随便抄个脚本就用。XAMPP 8.0 以上版本自带了 openssl.exe,路径在 C:\xampp\apache\bin\openssl.exe。用它生成的 PEM 格式证书,跟 Apache 的兼容性是最好的。

操作很简单:以管理员身份打开命令提示符(CMD),执行下面这行代码:

cd C:\xampp\apache\bin
openssl req -x509 -nodes -days 365 -newkey rsa:2048 ^
-keyout C:\xampp\apache\conf\ssl.key\server.key ^
-out C:\xampp\apache\conf\ssl.crt\server.crt

这里有三个关键点,一个都不能错:

  • -nodes 参数必须加:它代表“no DES”,也就是不给私钥加密。如果不加,Apache 启动时会卡在密码输入环节,而你根本没法在控制台里输入密码。
  • 输出路径必须跟配置文件一致:默认情况下,httpd-ssl.conf 里定义的 SSLCertificateFileSSLCertificateKeyFile 路径就是 "conf/ssl.crt/server.crt""conf/ssl.key/server.key"。所以上面命令里的路径完全匹配,不用改。
  • Common Name 要填对:执行命令后,会有一个交互环节让你填写证书信息。其中 Common Name 这一项至关重要——必须填你实际访问的域名,比如 localhost 或者 myapp.test。浏览器在校验证书时,会拿它和你地址栏里的域名对比。

为本地域名配置带 SAN 的证书(非 localhost 场景)

如果你用的是 dev.example.local 这类自定义域名,光靠上面那条命令生成的证书就不够用了。现代浏览器一查,发现证书里没有 Subject Alternative Name (SAN) 字段,立刻弹出“不安全”警告。这个字段,默认的 req 命令是不会帮你写的。

解决方法也不复杂:手动写一个 openssl.cnf 配置文件,放在 C:\xampp\apache\bin\ 目录下就行。文件内容像下面这样,重点在于 [alt_names] 部分:

[req]
distinguished_name = req_distinguished_name
x509_extensions = v3_req
prompt = no

[req_distinguished_name]
C = CN
ST = Beijing
L = Beijing
O = DevTeam
CN = dev.example.local

[v3_req]
subjectAltName = @alt_names

[alt_names]
DNS.1 = dev.example.local
DNS.2 = www.dev.example.local
IP.1 = 127.0.0.1

写好之后,在 CMD 里运行下面这条命令:

openssl req -x509 -nodes -days 3650 -newkey rsa:2048 ^
-config dev.example.local.cnf ^
-keyout dev.example.local.key ^
-out dev.example.local.crt

生成的两个文件,分别放到 conf/ssl.key/conf/ssl.crt/ 目录里。然后打开 httpd-ssl.conf,在对应的 块里,把证书和密钥的路径改成你刚生成的文件名。

强制 HTTP 跳转 HTTPS 并绕过浏览器警告

证书配好,不等于用户会自动走 HTTPS。要在 httpd-ssl.conf 里对应的 块中,加上一条重定向规则(前提是 mod_rewrite 模块已启用):

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]

不过,服务器端的配置只能决定流量怎么走,浏览器对自签名证书的警告,它管不了。这个警告必须手动消除:把你生成的 server.crt(或 dev.example.local.crt)文件,导入到 Windows 的“受信任的根证书颁发机构”存储区。Windows 上操作很简单:双击证书文件 → “安装证书” → 选择“本地计算机” → 选择“将所有证书放入下列存储”,然后浏览到“受信任的根证书颁发机构”。这一步要是漏了,每次访问时都去点“高级 → 继续前往”,那就白费功夫了。

必须提醒一句:证书里的 Common NameSAN、Apache 配置里的 ServerNamehosts 文件里映射的域名、浏览器地址栏里打出的地址——这四个玩意儿必须完全一致,差一个字符,浏览器都会报证书错误。很多时候,问题不是配置多复杂,而是每一处细节都没有真正对得上。

本文转载于:https://www.php.cn/faq/2438949.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注