Nginx的HTTPS部署与安全性能优化

Nginx作为一款高性能的Web服务器和反向代理服务器,被广泛用于应用部署和负载均衡。在安全环保意识的逐渐提高下,HTTPS也成为现代Web应用中必不可少的一环。本篇文章将重点介绍Nginx的HTTPS部署和安全性能优化。

一、Nginx的HTTPS部署

证书申请

首先需要去证书颁发机构(CA)进行SSL证书的申请。申请成功后,会得到一个证书文件(.crt)和一个私钥文件(.key)。

HTTPS配置

Nginx的HTTPS配置需要涉及到三个方面:HTTP转发到HTTPS、Nginx的证书配置和HTTPS的配置。

(1)HTTP转发到HTTPS

在Nginx的配置文件中,需要添加一段HTTP的配置,使得用户访问HTTP默认端口80时,能够自动跳转到HTTPS的默认端口443上。

复制代码
server {
    listen 80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
}

(2)Nginx证书配置

在Nginx的配置文件中,需要将刚刚申请的SSL证书和私钥文件添加到配置文件中。

复制代码
server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/cert.crt;
    ssl_certificate_key /path/to/cert.key;
    ...
}

(3)HTTPS配置

需要配置HTTPS协议的具体选项,例如启用HTTP/2协议、禁用SSLv3等。

复制代码
http2_push_preload on;  #启用HTTP/2协议的推送预加载
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;  #指定启用的TLS协议版本
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM;  #指定加密套件
ssl_prefer_server_ciphers on;  #常用加密套件优先顺序为服务端指定的值
ssl_session_cache shared:SSL:10m;  #指定SSL session缓存
ssl_session_timeout 10m;  #指定SSL session超时时间

二、Nginx的安全性能优化

在进行HTTPS服务的部署后,还需要注意以下安全性能优化方面的问题,以确保服务的稳定和安全:

检测OCSP响应

OCSP(在线证书状态协议)用于检测证书是否已经被废除。在Nginx的HTTPS配置中,可以通过以下程序进行OCSP响应检测:

复制代码
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /path/to/fullchain.pem;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 10s;

其中关键点解读如下:

  • ssl_stapling on 开启OCSP响应
  • ssl_stapling_verify on 开启OCSP响应验证
  • ssl_trusted_certificate /path/to/fullchain.pem 配置证书链
  • resolver 8.8.8.8 8.8.4.4 valid=300s 配置DNS解析器
  • resolver_timeout 10s 配置DNS解析时间
    DNS解析器需要配置成公认的可信解析器,这里配置成Google公共DNS。

启用HSTS

HSTS(HTTP严格传输安全)防止用户被劫持到HTTP页面,从而提高安全级别。在Nginx的HTTPS配置中,可以像下面这样开启HSTS:

复制代码
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

其中关键点解读如下:

  • max-age=31536000 定义HSTS头的持续时间
  • includeSubDomains 启用所有子域名

启用安全协议

默认情况下,Nginx只启用了TLSv1和TLSv1.2,如果需要启用其他的加密协议,可以通过以下方式配置:

复制代码
ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1;

其中关键点解读如下:

  • TLSv1.3 定义启用的加密协议

启用HMAC密钥算法

通过HTTPS传输的数据,需要使用密钥来加密数据,使用HMAC (Hash-based message authentication code)可以提升数据传输时的安全性。在Nginx配置文件中启用HMAC的方法如下:

复制代码
ssl_ciphers ... !aNULL !eNULL !EXPORT !CAMELLIA !DES !MD5 !PSK !RC4 !SEED +AES256 !kEDH +SHA256 +HMAC;

其中关键点解读如下:

  • AES256 启用AES256加密算法
  • +SHA256 启用SHA256哈希函数
  • +HMAC 启用HMAC密钥算法
相关推荐
上海控安30 分钟前
实时系统保障关键技术-最坏情况执行时间(WCET)分析
测试工具·安全
网安蟹佬霸1 小时前
密码学安全实战:从加密原理到哈希破解的完整攻防指南
网络·算法·安全·web安全·开源·密码学·哈希算法
0xBADCODE2 小时前
Flask SSTI读SECRET_KEY+伪造Session:税务系统渗透全流程
前端·后端·python·安全·web安全·网络安全·flask
迪康coolmu2 小时前
企业文件外发防泄漏实践:从通道封堵到三层全链路管控
大数据·运维·网络·人工智能·安全·阿里云
东风破_10 小时前
Docker 基础:为什么需要容器?
前端·后端·nginx
东风破_10 小时前
Docker 实战:使用 Nginx 作为容器入口代理 Node 服务
前端·后端·nginx
石头猫灯11 小时前
WordPress wp2shell 漏洞链完整拆解流程
网络·数据结构·安全·web安全
网安蟹佬霸12 小时前
OSINT开源情报收集实战:从信息搜集到资产测绘(2026最新万字保姆级指南)
前端·网络·安全·web安全·网络安全·开源
ltl12 小时前
TLS 1.3 工程实践:1-RTT 与 0-RTT 的安全权衡
安全
游戏开发爱好者813 小时前
WebSocket 抓包怎么查看内容?从握手到消息帧完整解读
网络协议·计算机网络·网络安全·ios·adb·https·udp