Nginx安全控制

news2024/11/15 12:41:19

安全隔离

通过代理分开了客户端到应用程序服务器端的连接,实现了安全措施。在反向代理之前设置防火墙,仅留一个入口供代理服务器访问。
在这里插入图片描述

使用SSL对流量进行加密

常用的http请求转变成https请求,因为http协议是明文传输数据,存在安全问题,而https是加密传输,相当于http+ssl,并且可以防止流量劫持。
简单的来说两个都是HTTP协议,只不过https是身披SSL外壳的http.
HTTPS是一种通过计算机网络进行安全通信的传输协议。它经由HTTP进行通信,利用SSL/TLS建立全通信,加密数据包,确保数据的安全性。
SSL(Secure Sockets Layer)安全套接层
TLS(Transport Layer Security)传输层安全
上述这两个是为网络通信提供安全及数据完整性的一种安全协议,TLS和SSL在传输层和应用层对网络连接进行加密。

  • 环境准备

Nginx使用SSL,需要添加一个模块--with-http_ssl_module,该模块在编译的过程中又需要OpenSSL的支持

  • Nginx添加SSL的支持

nginx支持SSL需要安装ngx_http_ssl_module模块

# 详细操作参考《Nginx基本概念》Nginx热部署 或者《Nginx静态资源压缩》Gzip与sendfile共存
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相关指令
  1. ssl指令

用来在指定的服务器开启HTTPS,可以使用 listen 443 ssl

语法ssl on | off;
默认值ssl off;
位置http、server
  1. ssl_certificate指令

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

语法ssl_certificate file;
默认值
位置http、server
  1. ssl_certificate_key指令

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

语法ssl_ceritificate_key file;
默认值
位置http、server
  1. ssl_session_cache指令

用来配置用于SSL会话的缓存

语法ssl_sesion_cache off|none|[builtin[:size]] [shared:name:size]
默认值ssl_session_cache none;
位置http、server
  • 参数选项

off:禁用会话缓存,客户端不得重复使用会话
none:禁止使用会话缓存,客户端可以重复使用,但是并没有在缓存中存储会话参数
builtin:内置OpenSSL缓存,仅在一个工作进程中使用。
shared:所有工作进程之间共享缓存,缓存的相关信息用name和size来指定

  1. ssl_session_timeout指令

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

语法ssl_session_timeout time;
默认值ssl_session_timeout 5m;
位置http、server
  1. ssl_ciphers指令

指出允许的密码,密码指定为OpenSSL支持的格式
可以使用openssl ciphers查看openssl支持的格式

语法ssl_ciphers ciphers;
默认值ssl_ciphers HIGH:!aNULL:!MD5;
位置http、server
  1. ssl_prefer_server_ciphers指令

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

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

配置HTTPS案例

生成证书

生产上使用的证书都是由ca中心签发的可信任证书,需要购买,这里使用openssl生成证书进行配置

mkdir /root/cert
cd /root/cert
# 生成私钥
# des3 是算法,2048位强度(为了保密性)。 
# server.key 是密钥文件名 
# -out的含义是:指生成文件的路径和名称。
openssl genrsa -des3 -out server.key 2048
# 查看刚刚生成的私钥
openssl rsa -text -in server.key
# 创建证书签名请求CSR文件
# -key的含义是:指定ca私钥
# -out的含义是: server.csr 生成证书文件
openssl req -new -key server.key -out server.csr
# 查看csr文件
openssl req -text -in server.csr -noout

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

# 生成CA证书
# x509的含义: 指定格式
# -in的含义: 指定请求文件
# -signkey的含义: 自签名
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

配置SSL

server {
    listen       443 ssl;
    server_name  localhost;
    ssl_certificate      /root/cert/server.crt;
    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;
    }
}

# http转https
server {
   listen 8085;
   server_name localhost;
   error_log /home/error.log info;
   rewrite_log on;
   location / {
       if ($scheme = http){
                rewrite ^/ https://$host$request_uri last;
        }
   }
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/12755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

黑马redis学习记录Ⅲ SpringDataRedis客户端

学习视频:https://www.bilibili.com/video/BV1cr4y1671t/ SpringDataRedis客户端 SpringData 是 Spring 中数据操作的模块,包含对各种数据库的集成,其中对 Redis 的集成模块就叫做 SpringDataRedis,官网地址:https://…

基于eNSP中大型校园/企业网络规划与设计_综合大作业

作者:BSXY_19计科_陈永跃BSXY_信息学院注:未经允许禁止转发任何内容基于eNSP中大型校园/企业网络规划与设计_综合大作业前言及技术/资源下载说明( **未经允许禁止转发任何内容** )一、设计topo图与设计要求(简单列举18个)二、相应…

漏洞深度分析|Apache Airflow example_bash_operator DAG 远程代码执行漏洞

项目介绍 Airflow 是一个使用 python 语言编写的 data pipeline 调度和监控工作流的平台。 Airflow 是通过 DAG(Directed acyclic graph 有向无环图)来管理任务流程的任务调度工具, 不需要知道业务数据的具体内容,设置任务的依赖…

Vue实现搜索关键字标红高亮加粗

博主介绍 📢点击下列内容可跳转对应的界面,查看更多精彩内容! 🍎主页:水香木鱼 🍍专栏:后台管理系统 文章目录 简介:这是一篇有关【Vue实现搜索关键字标红高亮加粗】的文章&#xf…

光流法draw_flow()函数报错

光流法draw_flow()函数报错 1 import cv22 from scipy import *3 4 5 def draw_flow(im, flow, step16):6 """ Plot optical flow at sample points7 spaced step pixels apart. """8 h, w im.shape[:2]9 y, x mgrid[step / 2…

苹果电脑pd工具箱Parallels Toolbox中文

ParallelsToolbox中文版是一款体积小巧、功能齐全的电脑系统工具箱,Parallels Toolbox将所有的功能均非常直观的展现出来了,在这里可以轻松实现驱动器清理、视频转换、桌面隐藏、锁定屏幕、音频录制等一系列操作。 专为创意人士、学生、小企业主、长期多…

这些基本语法规则你还不知道?那你的Python还没入门...

官方对Python的介绍如下:Python是一款易于学习且功能强大的编程语言。它具有高效率的数据结构,能够简单又有效地实现面向对象编程。 Python有着非广泛的应用,几乎所有大中型互联网公司都在使用Python,例如国外的Google、Youtube、…

AutoDL算力租用,Mobaxterm+Pycharm+VScode通过SSH连接远程服务器AutoDL

上干货: 一 、AutoDL算力租用平台使用 https://www.autodl.com/register?codef8e175e4-67c3-4cca-b120-09b11caaf2e6 第一步先注册,新注册的有免费十块代金劵,提供免费体验一下,本想白嫖,一体验,直接上车…

重塑感知,荣耀金洋!金洋奖两项用户体验奖项公布

11月17日,银行APP用户体验外滩峰会圆满落幕。其间,金洋奖用户体验APP Top20、金洋奖适老化及无障碍体验APP Top10两项用户体验类奖项重磅颁出,聚焦用户体验,发现和挖掘业内用户体验优秀实践案例,助力行业提升APP用户体…

已有项目与git建立连接、老项目搭建git管理

最近接手了一个已经上线很久的项目,原来都是ftp进行修改,所以谁改的改了什么都没有记录,决定给这个项目加上git。 首先由于项目在线上服务器我没有直接在线上进行git远程库的上传,所以ftp把整个项目都拉到本地之后进行的操作。 一…

prometheus安装和oracle告警配置

一、安装Prometheus 通过git下载新版本promethus mv prometheus-2.40.1.linux-amd64.tar.gz /usr/local/ cd /usr/local tar zxvf prometheus-2.40.1.linux-amd64.tar.gz cd /usr/local/prometheus-2.40.1.linux-amd64 vim prometheus.yml global:scrape_interval: 15s # S…

BDD - SpecFlow Driver Pattern 驱动模式

BDD - SpecFlow Driver Pattern 驱动模式引言Driver Pattern 的优势举例不用 Driver Pattern运用 Driver Pattern引言 前面 《 BDD - SpecFlow Page Object Model POM 》介绍了 POM 模式,用于提取 Web UI 元素封装成 Page Object 类,今天介绍另外一种 D…

电子统计台账:处理时间与名称所在行有交错的流水账格式

目录 1 新建项目 2 水平过滤模板 3 垂直过滤模板是重点 实际工作中,各种千奇百怪的事情都能遇上。本来普通格式的流水账可以处理了还挺高兴,一下子又来了这样的数据格式,居然名称前面根本没有日期这样的流水账: 这种情况还是需…

【LeetCode每日一题】——462.最小操作次数使数组元素相等 II

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 排序 二【题目难度】 中等 三【题目编号】 462.最小操作次数使数组元素相等 II 四【题目描述】…

2022NUSTCTF--web

ezProtocol web基础 POST / HTTP/1.1 Host: 43.143.7.97:28520 Pragma: no-cache Cache-Control: no-cache Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Acc…

Linux信号

目录注意信号概念用kill -l命令可以查看系统定义的信号列表信号处理常见方式概览产生信号1. 通过终端按键产生信号Core Dump2. 调用系统函数向进程发信号3. 由软件条件产生信号4. 硬件异常产生信号信号捕捉模拟一下野指针异常总结阻塞信号1. 信号其他相关常见概念2. 在内核中的…

Jest单测实践篇

快照测试 快照测试在你要确保你的UI没有发生改变的时候非常有用。jest的快照测试为文本测试,第一次执行时存储本次的快照,然后在之后的测试过程中进行文本比对。 toMatchSnapshot() 方法 import React from react; import Link from ../Link.react; i…

Python编程 列表的常用方法

作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.字符串(str) 1.字符串常见操作(熟悉) 2.L.append(object) 3.L.exten…

前端开发环境搭建

1.安装git 去官网下载git安装包https://gitforwindows.org/ 2.配置ssh公钥这样再操作git 的时候就不用输入密码了 1、鼠标右键,点击 ‘git bash here’ 2、配置一下name 、eamil git config --global user.name 用户名 git config --global user.email 邮箱 3…

Spring 6面向切面编程aop详解

面向切面编程十五、面向切面编程AOP15.1 AOP介绍15.2 AOP的七大术语15.3 切点表达式15.4 使用Spring的AOP15.4.1 准备工作15.4.2 基于AspectJ的AOP注解式开发实现步骤通知类型切面的先后顺序优化使用切点表达式全注解式开发AOP15.4.3 基于XML配置方式的AOP(了解&…