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

Nginx的安全控制

安全控制 

关于web服务器的安全是比较大的一个话题,里面所涉及的内容很多,Nginx反向代理是安全隔离来提升web服务器的安全,通过代理分开了客户端到应用程序服务器端的连接,实现了安全措施。在反向代理之前设置防火墙,仅留一个入口供代理服务器访问。

使用SSL对流量进行加密

HTTPS是一种通过计算机网络进行安全通信的传输协议。它经由HTTP进行通信,利用SSL/TLS建立全通信,加密数据包,确保数据的安全性。

  • SSL(Secure Sockets Layer)安全套接层
  • TLS(Transport Layer Security)传输层安全

上述这两个是为网络通信提供安全及数据完整性的一种安全协议,TLS和SSL在传输层和应用层对网络连接进行加密。

总结来说为什么要使用https:

 http协议是明文传输数据,存在安全问题,而https是加密传输,相当于http+ssl,并且可以防止流量劫持。

nginx添加SSL的支持

前置安装

 yum install openssl-devel    # CentOS/RHEL

如果是使用yum安装的话,默认是有--with-http_ssl_module模块的。

如果是通过源码安装的话

  1. 将原有/usr/local/nginx/sbin/nginx进行备份
  2. 拷贝nginx之前的配置信息
  3. 在nginx的安装源码进行配置指定对应模块  ./configure --with-http_ssl_module
  4. 通过make模板进行编译
  5. 将objs下面的nginx移动到/usr/local/nginx/sbin下
  6. 在源码目录下执行  make upgrade进行升级,这个可以实现不停机添加新模块的功能

Nginx的SSL相关指令

ssl

 ssl:该指令用来在指定的服务器开启HTTPS

语法ssl_certificate file;
默认值
位置http、server
server{    listen 443 ssl;
}

ssl_certificate

为当前这个虚拟主机指定一个带有PEM格式证书的证书。

语法ssl_certificate file;
默认值
位置http、server

ssl_certificate_key

该指令用来指定PEM secret key文件的路径

语法ssl_ceritificate_key file;
默认值
位置http、server

ssl_session_cache

语法ssl_sesion_cache off|none|[builtin[:size]] [shared:name:size]
默认值ssl_session_cache none;
位置http、server
  • off:禁用会话缓存,客户端不得重复使用会话
  • none:禁止使用会话缓存,客户端可以重复使用,但是并没有在缓存中存储会话参数
  • builtin:内置OpenSSL缓存,仅在一个工作进程中使用。
  • shared:所有工作进程之间共享缓存,缓存的相关信息用name和size来指定

ssl_session_timeout

开启SSL会话功能后,设置客户端能够反复使用储存在缓存中的会话参数时间。

语法ssl_session_timeout time;
默认值ssl_session_timeout 5m;
位置http、server

 ssl_ciphers

指出允许的密码,密码指定为OpenSSL支持的格式

语法ssl_ciphers ciphers;
默认值ssl_ciphers HIGH:!aNULL:!MD5;
位置http、server

可以使用openssl ciphers查看openssl支持的格式。

ssl_prefer_server_ciphers

该指令指定是否服务器密码优先客户端密码

语法ssl_perfer_server_ciphers on|off;
默认值ssl_perfer_server_ciphers off;
位置http、server

生成证书

  1. 使用阿里云/腾讯云等第三方服务进行购买。
  2. 使用openssl生成证书

先要确认当前系统是否有安装openssl

openssl version

安装下面的命令进行生成

mkdir /root/cert # 创建目录并切换到该目录
cd /root/cert
openssl genrsa -des3 -out server.key 1024 # 生成带有密码保护的 RSA 密钥
openssl req -new -key server.key -out server.csr # 生成证书签名请求(CSR)
cp server.key server.key.org # 备份私钥文件并移除密码保护
openssl rsa -in server.key.org -out server.key
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt # 自签名证书

 生成带有密码保护的 RSA 密钥

openssl genrsa -des3 -out server.key 1024

 这将生成一个加密的 RSA 私钥文件 server.key,其中包含一个 1024 位的密钥。您将被要求输入一个密码来保护私钥文件,可以输入test

生成证书签名请求(CSR)

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

这将使用私钥文件生成一个证书签名请求文件 server.csr。在生成过程中,您将被要求提供一些与证书相关的信息,例如组织名称、域名等

  • 第一次会要求你输入你之前输入的密钥:test
  • 国家输入:CN
  • 省份:guangdong
  • 城市:guangzhou
  • 组织:gjs
  • 组织的:gjs
  • 域名:test
  • 邮箱地址:1216xx9850@qq.com
  • 密码:test
  • 公司:gjs 

备份私钥文件并移除密码保护

cp server.key server.key.org
openssl rsa -in server.key.org -out server.key

 这将复制一份原始的私钥文件 server.key,并将其备份为 server.key.org。然后,使用 openssl rsa 命令从备份文件中删除密码保护,并将结果保存回 server.key 文件中。需要输入密钥test

自签名证书

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

 这将使用私钥文件 server.key 和证书签名请求文件 server.csr 来生成一个自签名的 X.509 证书文件 server.crt。该证书的有效期将为 365 天。

完成上述步骤后,您将在 /root/cert 目录下获得以下文件

  • server.key: 不带密码保护的私钥文件
  • server.crt: 自签名的 SSL 证书文件

开启SSL实例

server {listen       443 ssl;server_name  localhost;ssl_certificate      /root/cert/server.cert; # 使用了绝对路径指定证书ssl_certificate_key  /root/cert/server.key;  # 使用了绝对路径指定密钥ssl_session_cache    shared:SSL:1m;ssl_session_timeout  5m;ssl_ciphers  HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers  on;location / {root   html;index  index.html index.htm;}
}

 测试

 

相关文章:

Nginx的安全控制

安全控制 关于web服务器的安全是比较大的一个话题,里面所涉及的内容很多,Nginx反向代理是安全隔离来提升web服务器的安全,通过代理分开了客户端到应用程序服务器端的连接,实现了安全措施。在反向代理之前设置防火墙,…...

字符串与字符编码 - GO语言从入门到实战

字符串与字符编码 - GO语言从入门到实战 字符串 与其他主要编程语⾔的差异 基本数据类型:string 是基础数据类型,而不是引用类型或指针类型。string 在内存中占用的空间大小是固定的,且只读、不可改变。字节切片:string 是只读…...

12P4375X042-233C KJ2005X1-BA1 CE3007 EMERSON servo controller

12P4375X042-233C KJ2005X1-BA1 CE3007 EMERSON servo controller 我们提供三种不同类别的EDGEBoost I/O模块供选择,以实现最大程度的I/O定制: 数字和模拟输入/输出网络和连接边缘人工智能和存储 利用EDGEBoost I/O实现变革性技术 EBIO-2M2BK EBIO-2M2BK载板支持…...

WPF向Avalonia迁移(四、其他事项)

开发必备 1. Avalonia项目源代码!!!!!!!!!!没有源代码,你连控件的背景色怎么改都找不着!! 2.下载你所使用的版本&#x…...

Python 代码调试

from pdb import set_trace as stx 是一个Python代码中常用的调试技巧之一,它用于在代码中插入断点以进行调试。这行代码的作用是将Python标准库中的 pdb(Python Debugger)模块中的 set_trace 函数导入,并将其重命名为 stx&#x…...

DM宣传单制作,利用在线模板,快速替换文字

如果你需要制作一批宣传单,但是时间很紧,而且没有专业的设计人员协助,那么你可以选择使用在线模板来快速制作宣传单。本文将介绍如何使用乔拓云平台,快速制作宣传单的方法。 步骤一:选择适合的在线制作工具 首先&…...

【力扣】42. 接雨水

这道题我卡了差不多1个小时,不是不会做,是不知道怎么能用栈来实现,后面看了一个博主的视频,豁然开朗,我主要的纠结点在于当指针指到7的时候,我计算出4到7的水块是2,但实际上是0,因为…...

IPETRONIK数据采集设备携手Softing Q-Vision软件致力于ADAS测试方案

一 背景 汽车ADAS技术是当下国内外的重点研究方向,且ADAS的发展水平和市场竞争力紧密相关,因此一套完善的ADAS测试方案对各整车厂而言非常重要。然而,国内ADAS测试却面临着很多阻碍,主要原因在于:相关测试设备昂贵&am…...

Go语言中的指针介绍

Go语言中的指针 文章目录 Go语言中的指针一、Go语言中的指针介绍1.1 指针介绍1.2 基本语法1.3 声明和初始化1.4 Go 指针的3个重要概念1.4.1 指针地址(Pointer Address)1.4.2 指针类型(Pointer Type)1.4.3 指针取值(Poi…...

简单理解区块链

这篇是挖矿篇详细介绍区块链之挖矿-CSDN博客的后置文章,咱们通过之前的解释进一步复习学习区块链叭! 百度百科定义 区块链,就是一个又一个区块组成的链条。每一个区块中保存了一定的信息,它们按照各自产生的时间顺序连接成链条。这…...

[尚硅谷React笔记]——第3章 React应用(基于React脚手架)

目录: react脚手架创建项目并启动react脚手架项目结构一个简单的Hello组件样式的模块化功能界面的组件化编码流程(通用)组件的组合使用-TodoList 1.react脚手架 xxx脚手架: 用来帮助程序员快速创建一个基于xxx库的模板项目 包含了所有需…...

《Linux 内核设计与实现》13. 虚拟文件系统

通用文件接口 VFS 使得可以直接使用 open()、read()、write() 这样的系统调用而无需考虑具体文件系统和实际物理介质。 好处:新的文件系统和新类型的存储介质需要挂载时,程序无需重写,甚至无需重新编译。 VFS 将各种不同的文件系统抽象后采…...

2021-06-09 51单片机:两个独立按键控制一个led,k1按下松开led闪烁三次,k2按下LED闪烁五次

缘由51单片机:两个独立按键控制一个led,k1按下松开led闪烁三次,k2按下LED闪烁五次_嵌入式-CSDN问答 #include "REG52.h" sbit K1 P1^0; sbit K2 P1^1; sbit LEDP0^0; void main() {unsigned char Xd0,ss0;unsigned int wei0;while(1){if(K10&&Xd0){ss3*2;…...

C/C++ 经典面试算法题

1.打印杨辉三角 1 #include <stdio.h>2 #include <string.h>3 4 int main()5 {6 int x;7 int a[100][100];8 printf("输入行数\n");9 scanf("%d",&x); 10 for(int i 0;i<x;i) 11 { 12 for(int j 0;…...

2023年下学期《C语言》作业0x02-分支 XTU OJ 1068 1069 1070 1071 1072

第一题 #include<stdio.h>int main() {int a;scanf("%d",&a);if(a>90&&a<100) printf("A");else printf("B");return 0; } 没有换行&#xff0c;不然会格式错误 第二题 #include<stdio.h>int main() {int a;s…...

JMeter学习第一、二、三天

首先&#xff0c;我们来了解一下到底什么是接口测试与性能测试&#xff1a; 接口测试 定义 接口测试主要关注系统组件之间的交互&#xff0c;确保各个接口按预期工作。这包括验证传递的数据、数据格式、调用的频率和其他与接口调用相关的任何限制。 目的 确保系统的各个组件可…...

常用的分布式ID解决方案原理解析

目录 前言 一&#xff1a;分布式ID的使用场景 二&#xff1a;分布式ID设计的技术指标 三&#xff1a;常见的分布式ID生成策略 3.1 UUID 3.2 数据库生成 3.3 数据库的多主模式 3.4 号段模式 3.5 雪花算法 前言 分布式ID的生成是分布式系统中非常核心的基础性模块&#…...

echarts3D地图打点

1、echarts地图打点加鼠标移上去显示文字 2、1-3和前面的一样echart3D地图 if (res.code 0) {const resData res.data || [];if (resData.length > 0) {for (var i 0; i < resData.length; i) {let arr new Array(2);arr[0] resData[i].longitude || ""…...

分布式主键算法

目录 一、引言二、常见算法介绍雪花算法&#xff08;Snowflake Algorithm&#xff09;特性详解优势劣势 UUID&#xff08;Universally Unique Identifier&#xff09;特性详解优势劣势 数据库自增主键特性详解优势劣势 分布式数据库的序列&#xff08;Sequence&#xff09;特性…...

暴力破解及验证码安全

1.暴力破解注意事项 1、破解前一定要有一个有郊的字典&#xff08;Top100 TOP2000 csdn QQ 163等密码&#xff09; https://www.bugku.com/mima/ 密码生成器 2、判断用户是否设置了复杂的密码 在注册页面注册一个,用简单密码看是否可以注册成功 3、网站是…...

AX-MES生产制造管理系统-总览

前言说起 MES 就不得不说 ERP&#xff0c;但是 ERP 大家基本上都知道&#xff0c;MES 就不一定了&#xff0c;常见的 ERP 系统包括 SAP、金蝶、用友等&#xff0c;ERP的流程相对来说也比较统一&#xff1b;MES就不同了&#xff0c;基本上熟悉业务流程的软件公司都可以开发并实施…...

机器学习结合基因无关通路映射:从临床数据挖掘新药靶点

1. 项目概述&#xff1a;当机器学习遇见代谢通路&#xff0c;如何从数据中“挖”出新药靶点&#xff1f;在生物医学研究的前沿&#xff0c;我们正面临一个核心矛盾&#xff1a;一方面&#xff0c;我们拥有海量的临床数据&#xff0c;比如血糖、血压、BMI等指标&#xff1b;另一…...

SMUDebugTool终极指南:如何深度掌控AMD Ryzen处理器的隐藏性能

SMUDebugTool终极指南&#xff1a;如何深度掌控AMD Ryzen处理器的隐藏性能 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: ht…...

基于ATtiny84的智能冰箱监控器:低功耗温度与门状态监测方案

1. 项目概述&#xff1a;一个装在树莓派盒子里的智能冰箱管家如果你家里有台老冰箱&#xff0c;或者对食物储存温度特别在意&#xff0c;总担心冰箱门没关严或者突然断电导致内部升温&#xff0c;那么这个自己动手做的“冰箱看门狗”项目就太适合你了。它本质上是一个高度定制化…...

广州因特智能:AI视觉软硬结合,打破半导体检测装备“卡脖子”困境

【导语&#xff1a;广州因特智能科技孵化于西安电子科技大学广州研究院&#xff0c;专注用AI视觉技术解决工业场景的“卡脖子”检测难题&#xff0c;为半导体、光通信、新能源三大领域提供高端检测装备。】校地合作孵化&#xff0c;构建完整能力体系广州因特智能科技由西安电子…...

MeloTTS实战:多语言语音合成的高效解决方案

MeloTTS实战&#xff1a;多语言语音合成的高效解决方案 【免费下载链接】MeloTTS High-quality multi-lingual text-to-speech library by MyShell.ai. Support English, Spanish, French, Chinese, Japanese and Korean. 项目地址: https://gitcode.com/GitHub_Trending/me/…...

uWSGI目录穿越漏洞CVE-2018-7490深度利用与防御实战

1. 这不是“读文件”那么简单&#xff1a;uWSGI目录穿越在真实攻防链中的定位与误判代价你刚在Vulfocus靶场里跑通了CVE-2018-7490的PoC&#xff0c;用curl "http://target:8080/?p../../../../etc/passwd"成功读出了root:x:0:0:root:/root:/bin/bash&#xff0c;截…...

OpenRASP原理与实战:Java应用层实时防护技术详解

1. 为什么我宁愿花三天部署OpenRASP&#xff0c;也不愿再写第五个自定义WAF过滤器去年冬天&#xff0c;我在给一家做在线教育SaaS平台做安全加固时&#xff0c;连续踩了三个坑&#xff1a;第一次用NginxLua写了套SQL注入规则&#xff0c;结果学生提交的“SELECT * FROM courses…...

总线式智能提示灯系统设计:从恒流驱动到模块化架构

1. 项目概述&#xff1a;从传统到智能的剧场提示灯系统革新在剧场、演播室或者大型活动现场的后台&#xff0c;如果你待过&#xff0c;一定对那套“红灯停&#xff0c;绿灯行”的提示灯系统不陌生。导演或舞台监督通过对讲机喊“Standby”&#xff08;准备&#xff09;&#xf…...

NBTExplorer:让Minecraft数据编辑从专业工具变成人人可用的可视化平台

NBTExplorer&#xff1a;让Minecraft数据编辑从专业工具变成人人可用的可视化平台 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer 你是否曾经面对Minecraft世界文件…...