文档中心
Laravel椤圭洰濡備綍鑷埗HTTPS璇佷功锛熸墜鎶婃墜鏁欎綘瀹夊叏閮ㄧ讲
时间 : 2025-09-27 16:23:13浏览量 : 3

作为一名网络安全从业者,我经常遇到开发者问:"为什么一定要用HTTPS?自己开发的小项目用HTTP不行吗?"今天我就用最直白的语言,结合Laravel框架,带大家了解自制HTTPS证书的全过程。
一、为什么你的Laravel项目需要HTTPS?
想象一下,你通过HTTP发送的数据就像写在明信片上的内容——任何一个经手的人都能看到。而HTTPS则像是把内容装进了防拆信封,只有收件人能打开。
真实案例:2025年某电商平台因未使用HTTPS,导致用户支付信息被中间人攻击窃取。攻击者在公共WiFi环境下轻松获取了用户的信用卡信息。
在Laravel项目中不使用HTTPS会导致:
1. 会话劫持风险(黑客可以偷走用户的登录状态)
2. CSRF防护失效
3. 用户密码等敏感信息裸奔传输
4. 现代浏览器会标记你的网站为"不安全"
二、自制证书 vs CA机构证书
CA机构颁发的证书就像公安局发的身份证,浏览器自动信任。而自制证书相当于你自己做的学生证——需要手动告诉浏览器"这个我认"。
适用场景对比表:
| 类型 | 成本 | 浏览器信任 | 适合场景 |
||||-|
| CA证书 | $0-$1000+/年 | 自动信任 | 生产环境 |
| 自制证书 | 免费 | 需手动信任 | 开发/测试环境 |
特别注意:生产环境请务必使用正规CA证书(如Let's Encrypt提供免费证书),自制证书仅推荐用于开发和测试!
三、手把手创建自签名证书
下面我们以Linux系统为例,演示如何为Laravel项目创建自签名证书:
1. 安装OpenSSL(如果尚未安装)
```bash
sudo apt-get install openssl
```
2. 生成私钥和CSR
openssl req -newkey rsa:2048 -nodes -keyout laravel.key -out laravel.csr
执行后会询问一些信息:
- Country Name (2 letter code):国家代码(如CN)
- Common Name:最重要的!填写你的域名或IP(如localhost或192.168.1.100)
3. 生成自签名证书
openssl x509 -signkey laravel.key -in laravel.csr -req -days 365 -out laravel.crt
现在你得到了三个关键文件:
- laravel.key:私钥文件(必须保密!)
- laravel.crt:自签名证书
- laravel.csr:证书签名请求(暂时用不到)
四、在Laravel中配置HTTPS
Nginx配置示例
```nginx
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /path/to/laravel.crt;
ssl_certificate_key /path/to/laravel.key;
location / {
Laravel标准配置
try_files $uri /index.php?$query_string;
}
}
Laravel.env配置
确保APP_URL使用https:
```env
APP_URL=https://yourdomain.com
Laravel强制HTTPS中间件
在`app/Http/Middleware`中创建`ForceHttps.php`:
```php
public function handle($request, Closure $next)
{
if (!$request->secure() && app()->environment('production')) {
return redirect()->secure($request->getRequestUri());
return $next($request);
然后在Kernel.php中注册中间件。
五、浏览器信任自签名证书
不同浏览器的操作略有差异,这里以Chrome为例:
1. 导入证书
```bash
Linux系统通常需要将crt转换为pem格式并复制到指定目录
sudo cp laravel.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
```
2. Windows系统:
- Chrome设置 → "隐私设置和安全性" → "安全" → "管理设备证书"
- "受信任的根证书颁发机构" → "导入"
3. Mac系统:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain laravel.crt
常见问题排查:
- "您的连接不是私密连接" → Chrome地址栏输入`thisisunsafe`临时绕过(仅限开发环境!)
- ERR_CERT_INVALID → 检查CommonName是否与访问域名完全匹配
六、进阶安全配置
即使使用自签名证书,也应该做好这些安全加固:
HSTS头设置(Nginx示例)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
这告诉浏览器:"以后只许用HTTPS访问我!"
SSL协议优化
禁用不安全的旧协议:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
七、生产环境升级方案
当项目要上线时,建议替换为以下免费方案:
1. Let's Encrypt
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com
2. cPanel自动签发
大多数虚拟主机都提供一键SSL功能
3. 云服务商免费证书
阿里云、腾讯云等都提供免费的单域名SSL证书
八、要点
1. HTTPS不是可选项而是必选项——即使对个人项目也是如此
2. Laraval核心功能(如CSRF)依赖安全的传输层
3. OpenSSL是制作自签名的瑞士军刀
4. Nginx/Apache配置需要同时指定crt和key文件路径
5.Chrome等现代浏览器对安全性要求越来越严格
记住一个原则:只要涉及用户登录或个人数据——无论项目大小——都必须上HTTPS。自制证书解决了开发环境的燃眉之急,但正式上线时一定要换成受信任的CA证书。
TAG:laravel自制https证书,查看网站ssl证书,网站ssl证书查询,ssl证书怎么看,网站ssl查询,个人网站ssl证书,如何查看ssl证书是否生效,ssl证书cer,ssl证书使用教程,网页ssl证书