ssl新闻资讯

文档中心

NginxHTTPS璇佷功閰嶇疆鍏ㄦ敾鐣ユ墜鎶婃墜鏁欎綘鎵撻€犲畨鍏ㄥ姞瀵嗙綉绔?txt

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

2NginxHTTPS璇佷功閰嶇疆鍏ㄦ敾鐣ユ墜鎶婃墜鏁欎綘鎵撻€犲畨鍏ㄥ姞瀵嗙綉绔?txt

在当今互联网环境中,HTTPS已经成为网站安全的基础配置。作为最流行的Web服务器之一,Nginx的HTTPS证书配置是每个运维人员必须掌握的技能。本文将用最通俗易懂的方式,带你一步步完成Nginx的HTTPS证书配置,让你的网站告别"不安全"警告。

一、为什么你的网站需要HTTPS?

想象一下,你正在咖啡馆用公共WiFi登录银行网站。如果没有HTTPS:

1. 黑客可以轻松窃取你的账号密码(中间人攻击)

2. 运营商可以在网页里插入广告(流量劫持)

3. 用户会看到浏览器显示的"不安全"警告(降低信任度)

HTTPS通过SSL/TLS协议解决了这些问题:

- 加密传输:像给数据装上了保险箱,只有你和服务器有钥匙

- 身份验证:确认真的是访问银行官网,不是钓鱼网站

- 数据完整性:保证传输过程中没被篡改

二、准备工作:获取SSL证书的三种方式

1. 免费证书 - Let's Encrypt(适合个人和小型企业)

```bash

使用Certbot工具自动获取(以Ubuntu为例)

sudo apt install certbot python3-certbot-nginx

sudo certbot --nginx -d yourdomain.com

```

这个命令会自动:

- 验证域名所有权

- 生成证书文件

- 修改Nginx配置

2. 商业证书 - DigiCert/Symantec等(适合企业级应用)

特点:

- 提供更高额度的保修赔偿(如100万美元保障)

- 支持更复杂的验证方式(OV/EV证书显示公司名称)

- CA机构会人工审核企业资质

3. 自签名证书(仅限测试环境使用)

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

-keyout /etc/ssl/private/selfsigned.key \

-out /etc/ssl/certs/selfsigned.crt

注意:浏览器会显示安全警告,不适合生产环境!

三、Nginx配置详解(以Let's Encrypt为例)

典型的配置文件`/etc/nginx/sites-available/yourdomain.com`内容如下:

```nginx

server {

listen 443 ssl;

server_name yourdomain.com www.yourdomain.com;

SSL证书路径(Certbot自动生成)

ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

SSL性能优化参数

ssl_protocols TLSv1.2 TLSv1.3;

禁用不安全的TLS1.0/1.1

ssl_prefer_server_ciphers on;

ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";

ssl_ecdh_curve secp384r1;

ssl_session_cache shared:SSL:10m;

HSTS头(强制HTTPS)

add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";

...其他站点配置...

}

HTTP强制跳转HTTPS

listen 80;

return 301 https://$host$request_uri;

关键参数说明:

- `fullchain.pem`包含服务器证书+中间CA证书链

- `privkey.pem`是绝对不能泄露的私钥文件

- TLS1.3比TLS1.2性能提升40%以上

四、常见问题排查指南

Q1: Nginx报错"SSL_CTX_use_PrivateKey_file"错误?

?检查项:

1. 确保证书和私钥路径正确

2. key文件权限是否为600:

```bash

chmod 600 /etc/ssl/private/*.key

```

3. key与cert是否匹配:

openssl x509 -noout -modulus -in cert.crt | openssl md5

openssl rsa -noout -modulus -in priv.key | openssl md5

(两个MD5值必须相同)

Q2: Chrome显示"您的连接不是私密连接"?

可能原因:

- 时间不同步:服务器时间偏差超过5分钟

```bash

date && sudo ntpdate pool.ntp.org

TAG:nginx https证书配置,nginx配置cer证书,nginx配置pem证书,nginx证书链