Nginx的安全控制

2023-10-09 00:44
文章标签 nginx 安全控制

本文主要是介绍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的安全控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/169122

相关文章

centos7基于keepalived+nginx部署k8s1.26.0高可用集群

《centos7基于keepalived+nginx部署k8s1.26.0高可用集群》Kubernetes是一个开源的容器编排平台,用于自动化地部署、扩展和管理容器化应用程序,在生产环境中,为了确保集... 目录一、初始化(所有节点都执行)二、安装containerd(所有节点都执行)三、安装docker-

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

一文带你搞懂Nginx中的配置文件

《一文带你搞懂Nginx中的配置文件》Nginx(发音为“engine-x”)是一款高性能的Web服务器、反向代理服务器和负载均衡器,广泛应用于全球各类网站和应用中,下面就跟随小编一起来了解下如何... 目录摘要一、Nginx 配置文件结构概述二、全局配置(Global Configuration)1. w

若依部署Nginx和Tomcat全过程

《若依部署Nginx和Tomcat全过程》文章总结了两种部署方法:Nginx部署和Tomcat部署,Nginx部署包括打包、将dist文件拉到指定目录、配置nginx.conf等步骤,Tomcat部署... 目录Nginx部署后端部署Tomcat部署出现问题:点击刷新404总结Nginx部署第一步:打包

Nginx、Tomcat等项目部署问题以及解决流程

《Nginx、Tomcat等项目部署问题以及解决流程》本文总结了项目部署中常见的four类问题及其解决方法:Nginx未按预期显示结果、端口未开启、日志分析的重要性以及开发环境与生产环境运行结果不一致... 目录前言1. Nginx部署后未按预期显示结果1.1 查看Nginx的启动情况1.2 解决启动失败的

tomcat在nginx中的配置方式

《tomcat在nginx中的配置方式》文章介绍了如何在Linux系统上安装和配置Tomcat,并通过Nginx进行代理,首先,下载并解压Tomcat压缩包,然后启动Tomcat并查看日志,接着,配置... 目录一、下载安装tomcat二、启动tomcat三、配置nginx总结提示:文章写完后,目录可以自动

Windows下Nginx的安装及开机启动

1、将nginx-1.16.1.zip解压拷贝至D:\web\nginx目录下。 2、启动Nginx,两种方法: (1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过。 (2)打开cmd命令窗口,切换到nginx目录下,输入命令 nginx.exe 或者 start nginx ,回车即可。 3、检查nginx是否启动成功。 直接在浏览器地址栏输入网址 http://lo

nginx介绍及常用功能

什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务。 Apache:重量级的,不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。这些都决定了Apache不可能成为高性能WEB服务器  nginx:

web群集--nginx配置文件location匹配符的优先级顺序详解及验证

文章目录 前言优先级顺序优先级顺序(详解)1. 精确匹配(Exact Match)2. 正则表达式匹配(Regex Match)3. 前缀匹配(Prefix Match) 匹配规则的综合应用验证优先级 前言 location的作用 在 NGINX 中,location 指令用于定义如何处理特定的请求 URI。由于网站往往需要不同的处理方式来适应各种请求,NGINX 提供了多种匹

nginx长连接的问题

转自: http://www.360doc.com/content/12/1108/17/1073512_246644318.shtml