ssl新闻资讯

文档中心

NginxHTTPS璇佷功鐢熸垚鍏ㄦ敾鐣ヤ粠鐢宠鍒伴厤缃竴姝ュ埌浣?txt

时间 : 2025-09-27 16:25:59浏览量 : 2

2NginxHTTPS璇佷功鐢熸垚鍏ㄦ敾鐣ヤ粠鐢宠鍒伴厤缃竴姝ュ埌浣?txt

在今天的互联网环境中,HTTPS已经成为网站安全的标配。作为最流行的Web服务器之一,Nginx配置HTTPS证书是每个运维人员的必修课。本文将用最通俗的语言,手把手教你如何为Nginx生成和配置HTTPS证书,涵盖Let's Encrypt免费证书和商业证书两种方案。

一、HTTPS证书的三种类型

在开始之前,我们需要了解三种常见的SSL/TLS证书:

1. 域名验证型(DV):只验证域名所有权,10分钟快速签发,适合个人博客和小网站(如Let's Encrypt)

2. 企业验证型(OV):需要验证企业真实性,1-3天签发,适合企业官网(如DigiCert)

3. 扩展验证型(EV):最高级别验证,浏览器地址栏会显示公司名称(如银行网站)

> 真实案例:某电商网站使用DV证书时被钓鱼网站仿冒,升级OV证书后仿冒成本大幅提高。

二、免费方案:Let's Encrypt自动生成

对于个人开发者和小型企业,Let's Encrypt是最佳选择。它提供90天有效期的免费DV证书,可以通过Certbot工具自动续期。

1. 安装Certbot客户端

```bash

Ubuntu/Debian系统

sudo apt update

sudo apt install certbot python3-certbot-nginx

CentOS系统

sudo yum install epel-release

sudo yum install certbot python3-certbot-nginx

```

2. 一键获取证书

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

这个命令会自动:

- 验证域名所有权(创建临时文件供CA访问验证)

- 生成RSA 2048位密钥对

- 下载证书到`/etc/letsencrypt/live/yourdomain.com/`目录

3. Nginx自动配置示例

Certbot会自动修改你的Nginx配置,典型的配置片段如下:

```nginx

server {

listen 443 ssl;

server_name yourdomain.com;

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

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

TLS协议优化配置

ssl_protocols TLSv1.2 TLSv1.3;

ssl_prefer_server_ciphers on;

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

}

> 安全提示:老旧的TLSv1.0/v1.1已被主流浏览器禁用,必须使用TLSv1.2以上版本。

三、商业证书手动安装流程

如果需要OV/EV证书(比如金融、电商网站),需要从商业CA购买后手动安装:

1. 生成CSR请求文件

openssl req -newkey rsa:2048 -nodes -keyout server.key -out server.csr

执行后会交互式询问:

Country Name (2 letter code) []: CN

State or Province Name []: Beijing

Locality Name []: Beijing

Organization Name []: Your Company Ltd.

Common Name []: yourdomain.com

必须与网站域名完全一致

2. CA签发后的文件包通常包含:

- `your_domain.crt`(主证书)

- `CA_Bundle.crt`(中间证书链)

- (可能有)`Trusted_Root.crt`(根证书)

3. Nginx完整配置示例

ssl_certificate /path/to/your_domain.crt;

ssl_certificate_key /path/to/server.key;

合并中间证书和主证书(按顺序)

cat your_domain.crt CA_Bundle.crt > combined.crt

ssl_trusted_certificate /path/to/combined.crt;

HSTS安全头(强制HTTPS)

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

四、常见问题排查指南

问题1:"SSL_ERROR_BAD_CERT_DOMAIN"错误

原因:证书域名与实际访问域名不匹配

解决:检查CSR中的Common Name和SAN(Subject Alternative Name)是否包含所有子域名

问题2:"NET::ERR_CERT_DATE_INVALID"错误

原因:服务器时间不同步导致证书过期误判

解决:运行`ntpdate pool.ntp.org`同步时间

问题3:浏览器显示"连接不安全"但证书有效

原因:页面混合加载HTTP资源(如图片、JS)

解决:使用Content-Security-Policy头或全局替换资源URL为https://

五、高级安全加固建议

1. 密钥轮换:每6个月更换一次私钥(即使证书未到期)

2. OCSP装订:减少客户端验证延迟

```nginx

ssl_stapling on;

ssl_stapling_verify on;

```

3. TLS会话复用:提升性能同时保持安全

```nginx

ssl_session_timeout 1d;

ssl_session_cache shared:MozSSL:10m;

通过以上步骤,你的Nginx服务器将获得A+级的SSL Labs评分。记住定期检查certbot renew --dry-run确保自动续期正常运作。对于高安全性要求的场景,建议考虑部署双证书记录技术(同时使用RSA和ECC密钥)。

TAG:nginx https证书生成,nginx ca证书,nginx ssl证书生成,nginx证书链,nginx配置cer证书