ssl新闻资讯

文档中心

Nginx閰嶇疆HTTPS鏃犺瘉涔︼紵涓€鏂囨暀浣犲浣曞畨鍏ㄥ疄鐜帮紙闄勫疄鎿嶆渚嬶級

时间 : 2025-09-27 16:27:26浏览量 : 3

为什么需要HTTPS?先讲个“快递盒”的故事

2Nginx閰嶇疆HTTPS鏃犺瘉涔︼紵涓€鏂囨暀浣犲浣曞畨鍏ㄥ疄鐜帮紙闄勫疄鎿嶆渚嬶級

想象你要寄一份机密文件,如果直接用透明塑料袋(HTTP),路上谁都能偷看。但若装进带锁的保险箱(HTTPS),即使被截获,对方也打不开。这就是HTTPS的核心作用——加密传输,防窃听、防篡改。

传统HTTPS依赖SSL/TLS证书(就像保险箱的钥匙),但某些内网测试或临时场景下,你可能不想花钱买证书(比如Let's Encrypt)或走复杂流程。这时候,“无证书HTTPS”就成了折中方案。

什么是“无证书HTTPS”?它安全吗?

严格来说,真正的HTTPS必须要有证书。但通过以下两种方式可以“模拟”HTTPS效果:

1. 自签名证书:自己生成一把“钥匙”,缺点是浏览器会警告“不安全”(好比自制锁,别人不认)。

2. Nginx的`ssl_verify_client off`:允许客户端不验证服务端证书(类似快递员不检查你的身份证就签收,风险极高)。

?? 注意:无证书的“HTTPS”实际是明文传输!只是端口用了443(像把快递塞进保险箱但不锁)。

实操:用Nginx配置“伪HTTPS”(自签名证书为例)

场景假设

公司内网有个后台页面`http://admin.internal.com`,你想改成`https://`但暂时没证书。

步骤1:生成自签名证书(自制钥匙)

```bash

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \

-keyout /etc/nginx/self.key -out /etc/nginx/self.crt

```

- `-nodes`:私钥不加密(省去输入密码的麻烦)

- 填写信息时,`Common Name`写你的域名(如`admin.internal.com`)

步骤2:Nginx配置监听443端口

编辑配置文件(如`/etc/nginx/sites-enabled/admin.conf`):

```nginx

server {

listen 443 ssl;

server_name admin.internal.com;

ssl_certificate /etc/nginx/self.crt;

自签名证书路径

ssl_certificate_key /etc/nginx/self.key;

私钥路径

关闭客户端验证(仅限内网测试!)

ssl_verify_client off;

location / {

root /var/www/admin;

index index.html;

}

}

步骤3:强制HTTP跳转到HTTPS(可选)

listen 80;

return 301 https://$host$request_uri;

HTTP自动跳转HTTPS

效果验证

访问`https://admin.internal.com`,浏览器会显示“不安全”警告(如下图)。点击“高级”→“继续访问”即可。

![浏览器警告自签名证书](https://example.com/warning.png) (配图示意)

风险警示:什么情况下绝对不能用?

1. 生产环境对外服务:用户看到警告会直接流失,且数据仍可能被中间人攻击。

- ?替代方案:用Let's Encrypt免费证书,一行命令搞定:

```bash

certbot --nginx -d admin.example.com

```

2. 涉及密码、支付等敏感操作:自签名等于裸奔。

进阶技巧:如何让自签名证书被信任?

如果你控制所有客户端设备(如企业内网),可以将自签名证书导入到系统的信任库中:

- Windows:双击`.crt`文件 → “安装证书” → “受信任的根颁发机构”。

- Linux/macOS:复制到`/usr/local/share/ca-certificates/`并运行`update-ca-certificates`。

一句话

“无证驾驶”HTTPS只能用于测试!真要上线服务,老老实实用正规证书——Let's Encrypt免费又省心,何必冒险?

TAG:nginx https 无证书,nginx配置ssl证书无效,nginx证书完整证书链,nginx配置cer证书