当前位置: 首页 > news >正文

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密钥算法

相关文章:

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

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

5.8. Trusted Board Boot

5.8. Trusted Board Boot启动 Trusted Board Boot(TBB) 功能通过验证所有固件镜像(包括正常世界引导加载程序)来防止恶意固件在平台上运行。它通过使用公钥加密标准 (PKCS) 建立信任链来实现这一点。 本文介绍了可信固件-A (TF-A) TBB 的设计,它是Trusted Board Boot(TBBR…...

微信小程序——van-field中的left-icon属性自定义

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...

一文学会lua脚本

文章目录 0.前言背景应用 1. 学习大纲1. 学习基本语法:2. 理解函数和模块:3. 深入数据结构:4. 高级特性和技巧:5. 实践项目: 2. Lua脚本2.1 学习基本语法2.2 理解函数和模块2.3 深入数据结构2.4 高级特性和技巧 3. 高级…...

学习JAVA打卡第四十二天

正则表达式及字符串的替换与分解 ⑴正则表达式 正则表达式是string对象的字符序列,该字符序列中含有具有特殊意义的字符,这些特殊字符称作正则表达式的元字符。 注:由于“ ”代表任何一个字符,所以在正则表达式中如果想使用普…...

2023-8-25食物链

题目链接&#xff1a;食物链 #include <iostream>using namespace std;const int N 50010;int n, m; int p[N], d[N];int find(int x) {if(p[x] ! x){int t find(p[x]);d[x] d[p[x]];p[x] t;}return p[x]; }int main() {cin >> n >> m;for(int i 1; i…...

为什么要使用IP地址进行定位

IP地址定位是一种以互联网协议地址&#xff08;IP地址&#xff09;为基础的技术&#xff0c;它能够准确地确定一个设备在互联网上的位置。这种技术的应用范围非常广泛&#xff0c;从个人用户到企业机构甚至是国家安全和网络安全等领域都需要使用IP地址定位。 首先&#xff0c;I…...

CSS概念

1、CSS与HTML结合方式 1.1 第一种方式 内联/行内样式 就是在我们的HTML标签上通过style属性来引用CSS代码。 优点:简单方便 &#xff1b; 缺点:只能对一个标签进行修饰。 1.2 第二种方式 内部样式 我们通过<style>标签来声明我们的CSS. 通常<style>标签我们推荐写在…...

淘宝API技术解析,实现关键词搜索淘宝商品(商品详情接口等)

淘宝提供了开放平台接口&#xff08;API&#xff09;来实现按图搜索淘宝商品的功能。您可以通过以下步骤来实现&#xff1a; 获取开放平台的访问权限&#xff1a;首先&#xff0c;您需要在淘宝开放平台创建一个应用&#xff0c;获取访问淘宝API的权限。具体的申请步骤和要求可以…...

Redis 7 教程 数据类型 基础篇

🌹 引导 Commands | Redishttps://redis.io/commands/Redis命令中心(Redis commands) -- Redis中国用户组(CRUG)Redis命令大全,显示全部已知的redis命令,redis集群相关命令,近期也会翻译过来,Redis命令参考,也可以直接输入命令进行命令检索。...

-bash: tree: command not found 的解决方法

在学习git操作时发现使用命令tree .git时显示错误 在网上查阅资料后&#xff0c;发现可能是没有安装生成tree的应用&#xff0c;所以我们使用命令安装应用即可 sudo yum install -y tree像这样就是安装成功了 我们再来试试 问题解决了&#xff0c;成功显示出树形结构...

SPI总线协议

简述 SPI协议是一种芯片与芯片之间的通讯&#xff0c;全称是Serial Peripheral Interface SPI通讯采用一主多从模式&#xff0c;产生时钟的一侧称为主机&#xff0c;另一侧称为从机。只有一个主机&#xff08;一般来说可以是微控制器/MCU&#xff09;&#xff0c;但是可以有一…...

Ubuntu20.04配置mysql配置主从复制

ubuntu20.04&#xff1a;mysql主库 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf # 修改完毕重启 sudo service mysql stop sudo service mysql start主库mysqld.cnf配置 [mysqld] ... # bind-address>->--- 127.0.0.1 # 注释掉&#xff0c;允许外部连接 # mysqlx-b…...

HTTP 服务器(基于go实现)

编写一个 HTTP 服务器&#xff0c;接收客户端 request&#xff0c;并将 request 中带的 header 写入 response header 解析HTTP请求头 import ("fmt""net/http" )func headers(w http.ResponseWriter, r *http.Request) {// 将request中的信息写入到 w中…...

【整数二分】

数的范围 #include<iostream> using namespace std; const int N 100000 11;int n; int q; int a[N];int key;int main(){cin>>n>>q;for(int i0;i<n;i)cin>>a[i];while(q--){cin>>key;//先去找左&#xff08;大于等于&#xff09;再去找右…...

开发一款AR导览导航小程序多少钱?ar地图微信小程序 ar导航 源码

随着科技的不断发展&#xff0c;增强现实&#xff08;AR&#xff09;技术在不同领域展现出了巨大的潜力。AR导览小程序作为其中的一种应用形式&#xff0c;为用户提供了全新的观赏和学习体验。然而&#xff0c;开发一款高质量的AR导览小程序需要投入大量的时间、人力和技术资源…...

Shell 编程快速入门 之 函数基础知识

目录 shell函数基础知识 函数定义 函数名 函数体 参数 返回值 return返回值的含义 return与echo返回值的区别 可变参数函数 自定义库函数 定义库函数 调用库函数 执行结果 递归函数 阶乘函数 斐波那契函数 shell函数基础知识 函数定义 函数名 Shell函数用…...

Flink流批一体计算(18):PyFlink DataStream API之计算和Sink

目录 1. 在上节数据流上执行转换操作&#xff0c;或者使用 sink 将数据写入外部系统。 2. File Sink File Sink Format Types Row-encoded Formats Bulk-encoded Formats 桶分配 滚动策略 3. 如何输出结果 Print 集合数据到客户端&#xff0c;execute_and_collect…...

03.sqlite3学习——数据类型

目录 sqlite3学习——数据类型 SQL语句的功能 SQL语法 SQL命令 SQL数据类型 数字类型 整型 浮点型 定点型decimal 浮点型 VS decimal 日期类型 字符串类型 CHAR和VARCHAR BLOB和TEXT SQLite 数据类型 SQLite 存储类 SQLite 亲和类型(Affinity)及类型名称 Boo…...

LLM-chatgpt训练过程

流程简介 主要包含模型预训练和指令微调两个阶段 模型预训练&#xff1a;搜集海量的文本数据&#xff0c;无监督的训练自回归decoder&#xff1b; O T P ( O t < T ) O_TP(O_{t<T}) OT​P(Ot<T​)&#xff0c;损失函数CE loss指令微调&#xff1a;在输入文本中加入…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...