Nginx-Https证书配置

一、引言:HTTPS------现代网站的"标配"与"刚需"

还在用 HTTP 裸奔?你的网站可能正面临以下风险:

  • 数据被窃听:用户密码、支付信息在传输中明文可见。
  • 中间人攻击:黑客可以篡改你的网页内容,植入恶意代码。
  • 浏览器警告:Chrome、Firefox 等主流浏览器会将 HTTP 网站标记为"不安全",严重影响用户体验和信任度。
  • SEO劣势:Google 等搜索引擎明确表示优先收录 HTTPS 网站。

好消息是,免费的 SSL/TLS 证书(如 Let's Encrypt)让 HTTPS 的普及变得前所未有的简单。本文将带你从申请证书到 Nginx 配置,再到安全加固,一站式搞定 HTTPS!

💡 核心价值

掌握 Nginx HTTPS 配置,是保护用户数据、提升网站可信度和 SEO 排名的基石


二、准备工作:获取你的 SSL 证书

选择证书类型

对于绝大多数个人博客、企业官网和小型应用,DV(域名验证)型免费证书完全够用。

推荐方案

  • Let's Encrypt:全球最流行的免费 CA,证书有效期 90 天,支持自动化续期。
  • 云服务商免费证书:阿里云、腾讯云等也提供一年期的免费 DV 证书,申请流程更图形化。

使用 Certbot 自动化申请(以 Let's Encrypt 为例)

Certbot 是官方推荐的 ACME 协议客户端,能自动完成证书申请、验证和部署。

步骤 1:安装 Certbot
bash 复制代码
# Ubuntu/Debian
sudo apt update
sudo apt install -y certbot python3-certbot-nginx

# CentOS/RHEL (需先启用EPEL)
sudo yum install -y epel-release
sudo yum install -y certbot python3-certbot-nginx
步骤 2:运行 Certbot 获取并安装证书
bash 复制代码
# Certbot 会自动修改你的 Nginx 配置
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com

按照提示操作,Certbot 会:

  1. 验证你对域名的控制权(通过在网站根目录放置一个临时文件)。
  2. 从 Let's Encrypt 服务器获取证书。
  3. 自动修改你的 Nginx 配置文件,添加 HTTPS 相关设置。
  4. 设置一个 cronsystemd 定时任务,用于自动续期(证书到期前 30 天)。

恭喜 !如果你看到 Congratulations! 的提示,你的网站已经可以通过 https://yourdomain.com 访问了!


三、手动配置 Nginx(理解原理)

即使使用了 Certbot,理解背后的配置逻辑也至关重要。假设你已将证书文件上传到服务器:

  • 证书文件/etc/ssl/certs/yourdomain.com.pem (或 .crt)
  • 私钥文件/etc/ssl/private/yourdomain.com.key

基础 Nginx 配置

编辑你的站点配置文件(通常位于 /etc/nginx/sites-available/yourdomain/etc/nginx/conf.d/yourdomain.conf):

复制代码
# 强制 HTTP 跳转到 HTTPS (最佳实践)
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://$host$request_uri;
}

# HTTPS 服务配置
server {
    listen 443 ssl http2; # 启用 HTTP/2
    server_name yourdomain.com www.yourdomain.com;

    # SSL 证书配置
    ssl_certificate /etc/ssl/certs/yourdomain.com.pem;
    ssl_certificate_key /etc/ssl/private/yourdomain.com.key;

    # 根目录和索引文件
    root /var/www/yourdomain;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

关键指令说明

  • listen 443 ssl http2;: 监听 443 端口,启用 SSL,并开启 HTTP/2 协议(性能更好)。
  • ssl_certificate : 指向你的公钥证书文件(.pem.crt)。
  • ssl_certificate_key : 指向你的私钥文件(.key)。
  • return 301 ...: 将所有 HTTP 请求永久重定向到 HTTPS,确保用户始终使用加密连接。

四、安全加固:让你的 HTTPS 更安全

基础配置只是开始。为了抵御更高级的攻击,我们需要进行安全加固。

1. 配置强加密套件

server 块中加入以下配置,禁用老旧、不安全的协议和加密算法。

复制代码
# 禁用不安全的 SSL 协议
ssl_protocols TLSv1.2 TLSv1.3; # 只允许 TLS 1.2 和 1.3

# 配置加密套件 (Cipher Suites)
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

# 优先使用服务器端的加密套件顺序
ssl_prefer_server_ciphers off;

2. 启用 HSTS(HTTP Strict Transport Security)

HSTS 是一个安全策略机制,它告诉浏览器在未来的请求中强制使用 HTTPS ,即使用户手动输入 http://

复制代码
# 在 server 块中添加
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
  • max-age: 浏览器记住此策略的时间(秒),这里设置为 2 年。
  • includeSubDomains: 将策略应用到所有子域名。
  • preload: 允许你的域名被加入浏览器的 HSTS 预加载列表(需额外申请)。

3. 配置 OCSP Stapling

OCSP Stapling 可以提升 TLS 握手速度,并增强隐私(避免浏览器直接向 CA 查询证书状态)。

复制代码
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s; # 使用 Google DNS
resolver_timeout 5s;

五、验证与测试

配置完成后,务必进行验证:

  1. 访问网站 :在浏览器中打开 https://yourdomain.com,检查地址栏是否出现安全锁标志。
  2. 在线检测工具
    • SSL Labs' SSL Test:最权威的 HTTPS 配置检测工具,会给出详细的安全评级(目标是 A+)。
    • Why No Padlock?:帮助排查混合内容(HTTP 资源嵌入 HTTPS 页面)等问题。

六、结语

感谢您的阅读!如果你有任何疑问或想要分享的经验,请在评论区留言交流!

相关推荐
ping某15 小时前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工3 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智3 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_3 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
程序员mine3 天前
HTTPS-TLS加密与证书完全指南(中)
网络协议·https·ssl
施努卡机器视觉3 天前
SNK施努卡侧滑门锁上滑轮总成自动化装配线,从零件到组件,全流程精密制造方案
运维·自动化·制造
AC赳赳老秦3 天前
用 OpenClaw 搭建服务器故障应急响应系统,自动处理 80% 常见运维故障
android·运维·服务器·python·rxjava·deepseek·openclaw