php环境支持https需启用openssl扩展并配置自签名证书:先在php.ini中启用extension=openssl、重启服务、用phpinfo()验证;再用openssl生成server.key、server.csr、server.crt三件套;最后在apache或nginx中配置443端口及证书路径,并将.crt导入系统根证书库以解决浏览器信任问题。

PHP环境要支持HTTPS和加密通信,OpenSSL扩展必须启用,且需配合自签名证书完成服务端配置。这不是单纯改几个配置的事,而是从底层密钥生成、证书签发到Web服务器集成的完整链路。
启用PHP的OpenSSL扩展
这是所有加密功能的前提,缺了它,file_get_contents('https://...')、cURL HTTPS请求、JWT签名验证等都会失败。
- 打开
php.ini,找到;extension=openssl这一行,删掉开头的分号 - 保存后重启Apache/Nginx(或整个一键环境如XAMPP、phpstudy)
- 新建
info.php写入<?php phpinfo(); ?>,浏览器访问并搜索“OpenSSL”,确认“OpenSSL Support”显示为enabled
用OpenSSL命令生成自签名证书
推荐在项目根目录或conf/ssl/下执行,生成三件套:server.key(私钥)、server.csr(证书请求)、server.crt(最终证书)。
- 生成2048位RSA私钥:
openssl genrsa -out server.key 2048 - 创建CSR并指定主体名(CN填
localhost或内网IP):openssl req -new -key server.key -out server.csr -subj "/C=CN/CN=localhost" - 自签名生成证书(有效期3650天,避免频繁重签):
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
若需支持127.0.0.1、192.168.x.x等多地址访问,必须加Subject Alternative Name(SAN),方法是准备openssl.cnf配置文件,再在req和x509命令中通过-config和-extfile参数引用。
配置Web服务器启用HTTPS
证书只是材料,还得让Apache或Nginx真正监听443端口并加载它们。
-
Apache:确保
httpd.conf已启用mod_ssl(取消LoadModule ssl_module modules/mod_ssl.so前的注释),并在虚拟主机中配置:<virtualhost><br> SSLEngine on<br> SSLCertificateFile "conf/ssl/server.crt"<br> SSLCertificateKeyFile "conf/ssl/server.key"<br></virtualhost>
-
Nginx:在
server块中添加:listen 443 ssl;<br>ssl_certificate /path/to/server.crt;<br>ssl_certificate_key /path/to/server.key;
客户端信任与调试要点
自签名证书不会被系统自动信任,所以浏览器访问https://localhost会报“不安全”。这不是配置错了,而是正常现象——你需要手动导入证书。
- 将
server.crt双击安装,选择“将所有证书放入下列存储”→“受信任的根证书颁发机构” - cURL或PHP代码调用HTTPS接口时,需显式指定证书路径:
curl_setopt($ch, CURLOPT_CAINFO, 'server.crt');或verify => 'server.crt' - Java、iOS、Python requests等环境也需单独导入该CRT文件,否则TLS握手会失败
私钥server.key务必设好文件权限(Linux/macOS建议chmod 600 server.key),绝不可提交到Git或放在Web可访问目录下。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











