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;}
}

 测试

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android原生实现控件outline方案(API28及以上)

Android控件的Outline效果的实现方式有很多种,这里介绍一下另一种使用Canvas.drawPath()方法来绘制控件轮廓Path路径的实现方案(API28及以上)。 实现效果: 属性 添加Outline相关属性,主要包括颜色和Stroke宽度&…

RunnerGo亮相QECon大会上海站,来看看这款全栈测试平台

QECon(Quality Efficiency Conference)质量效能大会在上海正式开幕!本次大会以"数生智慧:高质量发展新引擎"为主题,深入探讨如何借助数字化和智能化技术推动软件质量的发展,为高质量经济发展提供…

ctfshow web入门 php特性 web126-web130

1.web126 和前面一样的 payload: get: a1fl0gflag_give_me post: CTF_SHOW&CTF[SHOW.COM&funparse_str($a[1]) 或 get: ?$fl0gflag_give_me post:CTF_SHOW&CTF[SHOW.COM&funassert($a[0]) assert($a[0]) 是把fl0g赋值为flag_give_me $a[0]是当前…

运营商大数据,三网融合大数据,联通大数据,移动大数据

有许多公司和企业依靠电话营销和短信营销。对于他们来说,客户资源就是维生素和维生素,客户资源的及时性和准确性是这些公司和企业最关心的问题。长期使用低质量、大量无效的客户资源,是对时间的浪费,是对人力物力财力的浪费&#…

opengauss数据备份(docker中备份)

首先如果想直接在宿主机上进行使用gs_dump备份需要glibc的版本到2.34及以上,查看版本命令为 ldd --version 如图所示,本宿主机并不满足要求,所以转向在docker容器中进行备份, 然后进入opengauss容器中,命令为 docker…

华为数通方向HCIP-DataCom H12-831题库(单选题:221-240)

第221题 以下哪些项能被正则表达式^30.成功匹配? A、200 100 300 B、100 200 300 C、300 200 100 D、300 100 200 答案:CD 解析: 30.其中的“点”表示的是任何的一个数字,表示的是as-path的开头;所以以300开头的都是满足题目需求的。 第222题 以下哪些项的Community属性能…

使用kubectl连接远程Kubernetes(k8s)集群

使用kubectl连接远程Kubernetes集群 环境准备下载kubectl下载地址 安装kubectl并处理配置文件Windows的安装配置安装kubectl拉取配置文件安装kubectl拉取配置文件kubectl命令自动补全 Linux的安装配置安装kubectl拉取配置文件kubectl命令自动补全 环境准备 你需要准备一个Kube…

ElasticSearch 学习7 集成ik分词器

网上找了一大堆,很多都介绍的不详细,开始安装完一直报错找不到plugin-descriptor.properties,有些懵这个东西不应该带在里面吗,参考了一篇博客说新建一个这个,新建完可以启动,但是插入索引数据会报错找不到…

Linux虚拟机搭建RabbitMQ集群

普通集群模式,意思就是在多台机器上启动多个 RabbitMQ 实例,每台机器启动一个。创建的 queue,只会放在一个 RabbitMQ 实例上,但是每个实例都同步 queue 的元数据(元数据可以认为是 queue 的一些配置信息,通…

华为OD机试 - 最优策略组合下的总的系统消耗资源数(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明4、思路 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷…

数学建模预测模型MATLAB代码大合集及皮尔逊相关性分析(无需调试、开源)

已知2010-2020数据,预测2021-2060数据 一、Logistic预测人口 %%logistic预测2021-2060年结果 clear;clc; X[7869.34, 8022.99, 8119.81, 8192.44, 8281.09, 8315.11, 8381.47, 8423.50, 8446.19, 8469.09, 8477.26]; nlength(X)-1; for t1:nZ(t)(X(t1)-X(t))/X(t1…

【物联网】Arduino+ESP8266物联网开发(一):开发环境搭建 安装Arduino和驱动

ESP8266物联网开发 1.开发环境安装 开发软件下载地址: 链接: https://pan.baidu.com/s/1BaOY7kWTvh4Obobj64OHyA?pwd3qv8 提取码: 3qv8 1.1 安装驱动 将ESP8266连接到电脑上,安装ESP8266驱动CP210x 安装成功后,打开设备管理器&#xff0c…