ssl新闻资讯

文档中心

NginxSSL璇佷功鎬庝箞鐢熸垚锛熸墜鎶婃墜鏁欎綘鎵撻€犲畨鍏ㄥ姞瀵嗙綉绔?txt

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

2NginxSSL璇佷功鎬庝箞鐢熸垚锛熸墜鎶婃墜鏁欎綘鎵撻€犲畨鍏ㄥ姞瀵嗙綉绔?txt

在今天的互联网环境中,SSL/TLS证书已经成为网站安全的标配。无论你是个人站长还是企业运维,学会为Nginx配置SSL证书都是必备技能。本文将用最通俗的语言,结合具体操作示例,带你从零开始生成并部署SSL证书到Nginx服务器。

一、SSL证书基础知识扫盲

SSL证书就像网站的"身份证",它有两个核心作用:

1. 加密传输:防止数据在传输过程中被窃听(比如你输入的密码)

2. 身份认证:证明这个网站确实属于声称的机构(防止钓鱼网站)

常见的有三种类型:

- 自签名证书:免费但浏览器会显示警告(适合测试环境)

- Let's Encrypt:免费且受信任(个人网站首选)

- 商业证书:价格几百到上万不等(企业级需求)

> 举例说明:自签名证书就像你自己手写的名片,Let's Encrypt相当于派出所开的证明,而商业证书好比公证处出具的正式文件。

二、实战生成SSL证书的3种方法

方法1:OpenSSL创建自签名证书(测试用)

```bash

1. 生成2048位的私钥

openssl genrsa -out myserver.key 2048

2. 生成证书签名请求(CSR)

openssl req -new -key myserver.key -out myserver.csr

会交互式询问国家、公司名等信息,测试可全部按回车

3. 生成有效期365天的证书

openssl x509 -req -days 365 -in myserver.csr -signkey myserver.key -out myserver.crt

```

生成后你会得到两个关键文件:

- `.key`文件:私钥,相当于保险箱钥匙

- `.crt`文件:公钥证书,相当于保险箱编号牌

方法2:Certbot自动获取Let's Encrypt证书

这是目前最推荐的免费方案,全程自动化:

Ubuntu/Debian系统安装Certbot

sudo apt update

sudo apt install certbot python3-certbot-nginx

一键获取并配置证书(替换yourdomain.com)

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

Certbot会自动:

1. 验证域名所有权(通过80端口)

2. 下载证书到`/etc/letsencrypt/live/`

3. 修改Nginx配置启用HTTPS

4. 设置自动续期(解决90天有效期问题)

方法3:商业证书申请流程

以DigiCert为例典型步骤:

1. 在官网购买对应类型的SSL证书

2. 提交CSR文件(同方法1的第二步)

3. 完成域名验证(邮箱/DNS/TXT记录)

4. 下载颁发的`.crt`和`.ca-bundle`文件

三、Nginx配置SSL最佳实践

编辑Nginx配置文件(通常位于`/etc/nginx/sites-enabled/default`):

```nginx

server {

listen 443 ssl;

server_name yourdomain.com;

ssl_certificate /path/to/your_domain.crt;

ssl_certificate_key /path/to/your_domain.key;

TLS协议优化配置

ssl_protocols TLSv1.2 TLSv1.3;

禁用不安全的TLSv1.0/1.1

ssl_prefer_server_ciphers on;

ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';

HSTS安全头(强制HTTPS)

add_header Strict-Transport-Security "max-age=63072000" always;

...其他常规配置...

}

关键安全配置说明:

- `ssl_protocols`:禁用老旧协议防止降级攻击

- `ssl_ciphers`:指定强加密套件组合

- `HSTS头`:告诉浏览器未来一年都只用HTTPS访问

四、验证与故障排查技巧

部署完成后务必检查:

检查Nginx配置语法

sudo nginx -t

重启Nginx生效

sudo systemctl restart nginx

在线测试SSL配置(替换你的域名)

curl -I https://yourdomain.com

sslscan yourdomain.com

常见问题解决方案:

1. 浏览器显示不安全

- CA根证书未安装(商业证书需要上传.ca-bundle)

- SNI未启用(一个IP多个域名时需要)

2. ERR_SSL_VERSION_OR_CIPHER_MISMATCH

```nginx

调整协议支持范围

ssl_protocols TLSv1.2 TLSv1.3;

```

3. Let's Encrypt续期失败

```bash

手动强制更新

sudo certbot renew --force-renewal

五、高级安全加固建议

对于金融、电商等敏感业务站点建议追加:

1.OCSP Stapling加速:

```nginx

ssl_stapling on;

ssl_stapling_verify on;

resolver8 .8 .8 .8 valid=300s;

2.双证书记录提升性能:

```bash

将常用ECDSA和传统RSA结合使用

opensslecparam-out ecparam.pem-name prime256v1-genkey

openslreq-new-nodes-x509-days365-key ecparam.pem-out ecdsa.crt

3.定期轮换密钥:

```bash

!/bin/bash

mv server.key server.key.bak && openslgenrsa-out server.key4096

systemctl reload nginx

```

通过以上步骤你的Nginx服务器就能获得专业级的HTTPS防护了。记得每隔6个月检查一次加密套件是否过时可以使用[SSL Labs测试工具](https://www.ssllabs.com/ssltest/)进行深度评估。

TAG:nginx ssl证书怎么生成,nginxssl证书配置,nginx ssl pem,nginx ssl_ciphers