Nginx快速入门:实现企业安全防护|nginx部署https,ssl证书(七)

news2025/3/12 13:43:25

0. 引言

之前我们讲到nginx的一大核心作用就是实现企业安全防护,而实现安全防护的原理就是通过部署https证书,以此实现参数加密访问,从而加强企业网站的安全能力。

nginx作为各类服务的统一入口,只需要在入口处部署一个证书,就能够实现各类后台服务的统一https加密

1. https协议简介

1.1 为什么要用https?

首先我们要知道http有什么问题,为什么要用https请求,http协议使用明文传输参数,这就导致参数传递过程中有被第三方截取到数据信息的风险(https用参数加密来解决),同时传输过程数据被截取,还可能被篡改(https用签名来保证数据完整性),下游也不知道收到的数据是不是原始数据,也就是不知道数据到底是谁发送的,有没有被改过(https用密钥对、非对称验签解决)。

基于以上的情况,在企业生产系统中,我们都建议使用https协议进行接口请求、数据传输

1.2 什么是ssl证书?

SSL证书是一种数字证书,它用于在互联网上提供安全的通信方式。它类似于现实生活中的各种证件,如驾驶证、护照和营业执照的电子副本。SSL证书的主要作用是在客户端浏览器和Web服务器之间建立一条加密的安全通道,以保护数据传输的安全。

SSL证书的申请和颁发过程由受信任的数字证书颁发机构(CA)负责,比如国内的阿里云。在颁发证书之前,CA会验证申请者的身份以及其对所申请域名的控制权。验证通过后,CA会签发SSL证书,证书包含内容:

  • 密钥对
  • 颁发者和使用者的信息
  • 证书的相关信息

1.3 https协议和ssl证书是什么关系

SSL(Secure Sockets Layer)和HTTPS(HTTP Secure)之间的关系是紧密相连的。HTTPS是一种安全的网络通信协议,它是在HTTP(Hypertext Transfer Protocol)协议的基础上,通过SSL协议提供了数据加密、数据完整性验证和服务器身份验证的功能。因此,可以说HTTPS是HTTP协议的安全版本,而SSL是实现HTTPS安全性的关键技术。

具体来说,HTTPS协议在传输数据时会使用SSL加密技术,确保数据在传输过程中不被窃听和篡改。此外,SSL证书用于验证服务器的身份,这有助于防止中间人攻击和欺骗性网站。用户可以通过查看浏览器地址栏中的绿色锁图标或HTTPS字样来确认当前连接是安全的。

所以我们是通过部署ssl证书,来实现https协议的。

2. 证书的颁布

2.1 第三方颁布

比如使用的阿里云的域名,就可以在阿里云申请证书,免费的是一年有效期,一年后要进行重新申请和部署,不然证书过期,就会影响接口调用,原本支持的https协议就会失效了。也有付费的,一般付费的可以使用好几年。

2.2 自签证书

这里我为了给大家演示,就使用自签证书,所谓自签证书就是自己利用第三方工具生成的证书,一样具备加密的功能,只是没有第三方的认证

签发证书步骤:
1、安装openssl工具,使用该工具签发证书

# 安装
yum install openssl -y

2、生成密钥对

# 创建并进入密钥目录,后续证书就生成在该目录下
mkdir /etc/nginx/pki
cd /etc/nginx/pki
# 指定权限
umask 077;
# 生成RSA私钥并指定长度
openssl genrsa -out private.pem 4096
# 根据私钥生成公钥
openssl rsa -in private.pem -pubout -out public.pem

在这里插入图片描述
执行成功后,会发现目录下多出了一个私钥和公钥文件
在这里插入图片描述

3、生成自签证书

# openssl req -new -x509 -key 私钥 -out 证书名 -days 证书有效期
openssl req -new -x509 -key private.pem -out ca.crt -days 36500
# 依次输入国家、省份、城市、公司、部门、域名、邮箱地址

在这里插入图片描述

4、查看目录下多出一个证书文件ca.crt
在这里插入图片描述

3. nginx部署ssl证书

官网文档:https://nginx.org/en/docs/http/configuring_https_servers.html

1、修改配置,指定证书路径

server {
    listen 443 ssl;
    server_name www.wu.com;
    root /html/wu;
    index index.html;
    # 指定证书和私钥
    ssl_certificate /etc/nginx/pki/ca.crt; # 指定证书路径,如果是第三方颁发的也会有这个文件,复制到指定目录下就行
    ssl_certificate_key /etc/nginx/pki/private.pem; # 私钥文件
    
    location / {
        proxy_pass: http://192.168.244.41:8083;
        proxy_set_header HOST $host;
        proxy_http_version 1.1;
    } 
    
}

2、同时配置http请求跳转https

server {
    listen 80;
    server_name www.wu.com;
    root /html/wu;
    index index.html;
    
    location / {
        rewrite (.*) https://192.168.244.41:8083/$uri redirect;   # 这里ip端口可以替换为你的域名
    }
    
}

3、访问测试:
首先我们直接通过https访问ip, 可以看到可以正常访问到,但是证书显示是无效的
在这里插入图片描述
这是因为证书是我们自己颁发的,并不是认证的第三方的,所以无效,但是可以看到证书本身的内容已经正常显示,我们在本地做一些测试时可以采用自颁发证书的形式,生产上还是要用正规的第三方颁发。
在这里插入图片描述

4. 总结

如上我们就完成了nginx ssl证书的部署,可以看到单纯看证书的部署并不难,关键大家要体会到证书的含义和作用

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

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

相关文章

12.鸿蒙HarmonyOS App(JAVA) page的隐式跳转

跳转到指定Page的指定AbilitySlice MainAbilitySlice按钮触发事件: btn.setClickedListener(component -> { Intent _intent new Intent(); Operation operation new Intent.OperationBuilder() .withBundleName(…

C++ std::string使用效率优化

字符串操作是任何一个C开发程序无法绕过的点,很多时候针对字符串的操作需要进行优化,从而达到更优的使用效率和内存利用率。一般会采用标准的std::string替代C字符串,一方面是std::string为一个成熟的类对象,其成员操作基本能满足…

std::string在 Windows MSVC和Linux Gcc 中capacity容量扩容策略的分析和对比

1、capacity()作用 在std::string中,capacity()为当前string占用内存字符的长度,表示当前string的容量,可以理解为一个预分配制度,如果当前的string不断进行扩展操作,则不需要每次都进行内存上的分配,提高程…

CentOS7搭建Elasticsearch与Kibana服务

1.部署单点es 1.1.创建网络 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络: docker network create es-net 1.2拉取elasticsearch镜像 docker pull elasticsearch:7.11.1 1.3.运行 运行docker命令,部…

NLP论文阅读记录 - 以大语言模型为参考学习总结

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作2.1文本生成模型的训练方法2.2 基于LLM的自动评估2.3 LLM 蒸馏和基于 LLM 的数据增强 三.本文方法3.1 Summarize as Large Language Models3.1.1 前提3.1.2 大型语言模型作为参考具有…

面向对象设计与分析40讲(15)简单工厂方法模式

文章目录 定义示例优缺点定义 简单工厂模式是一种创建型模式,用于根据客户端的需求创建对象实例,所谓的需求反映到编程语言里就是传入的参数。 简单工厂模式包括三个主要部分: 工厂类(Simple Factory):这是整个模式的核心。它负责根据客户端的请求来创建并返回相应的对…

罗门哈斯同级抛光树脂:单晶硅电池超纯水生产与应用

在光伏行业中,单晶硅电池是最高效和最可靠的太阳能电池之一。然而,生产单晶硅电池需要使用超纯水,这是许多光伏制造商所面临的一个挑战。那么,超纯水是如何生产的呢? 为什么需要超纯水? 超纯水是一种高纯…

vue3 setup + ts 项目模块找不到问题解决:Cannot find module ...

Vscode contrl shift p 打开vscode配置面板,查找typescript;是使用workspace version,完事儿

EternalBlue【永恒之蓝】漏洞详解(复现、演示、远程、后门、入侵、防御)内容丰富-深入剖析漏洞原理-漏洞成因-以及报错解决方法-值得收藏!

漏洞背景: 1.何为永恒之蓝? 永恒之蓝(Eternal Blue)爆发于2017年4月14日晚,是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。甚至于2017年5月12日, 不法分子…

JavaScript基础练习题解析与实践

如果大家感感兴趣也可以去看: 🎉博客主页:阿猫的故乡 🎉系列专栏:JavaScript专题栏 🎉ajax专栏:ajax知识点 🎉欢迎关注:👍点赞🙌收藏✍️留言 学习…

HarmonyOS4.0系统性深入开发04UIAbility组件详解(下)

UIAbility组件间交互(设备内) UIAbility是系统调度的最小单元。在设备内的功能模块之间跳转时,会涉及到启动特定的UIAbility,该UIAbility可以是应用内的其他UIAbility,也可以是其他应用的UIAbility(例如启…

LSTM的记忆能力实验 [HBU]

目录 模型构建 LSTM层 模型训练 多组训练 模型评价 模型在不同长度的数据集上的准确率变化图 模型汇总 总结 长短期记忆网络(Long Short-Term Memory Network,LSTM)是一种可以有效缓解长程依赖问题的循环神经网络.LSTM 的…

Text-to-SQL小白入门(十)RLHF在Text2SQL领域的探索实践

本文内容主要基于以下开源项目探索实践, Awesome-Text2SQL:GitHub - eosphoros-ai/Awesome-Text2SQL: Curated tutorials and resources for Large Language Models, Text2SQL, Text2DSL、Text2API、Text2Vis and more.DB-GPT-Hub:GitHub - eosphoros-ai…

【QML-按钮】

QML编程指南 VX:hao541022348 ■ 按钮■ AbstractButton■ Button■ CheckBox■ DelayButton■ RadioButton■ RoundButton🌟■ Switch🌟■ ToolButton🌟 ■ 按钮 ■ AbstractButton 所有的按钮控件的父类都是 AbstractButton 。…

Electron自定义通知Notification

Notification是什么? 对于渲染进程,Electron 允许开发者使用通知中API,来运行系统的原生通知进行显示。 如何实现系统Notification? const { Notification } require(electron);const isAllowed Notification.isSupported();…

市场复盘总结 20231226

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整 昨日回顾: SELECT CODE,成交额排名,净流入排名,代码,名称,DDE大单金额,涨幅,主力净额,DDE大单净量,CONVERT(DATETIME, 最后封…

概率论1:下象棋问题(3.5)

每日小语 时刻望着他人的眼色行事,是腾飞不了的。自己怎么想就积极地去做,这是需要胆量的。——广中平佑 题目 甲、乙二人下象棋, 每局甲胜的概率为a,乙胜的概率为b. 为简化问题,设没有和局的情况,这意味着a b1. 设想…

Flappy Bird游戏python完整源码

通过pygame实现当年风靡一时的flappy bird小游戏。 当前只设定了同样长度的管道,图片和声音文件自行导入。 效果如下: # -*- coding:utf-8 -*- """ 通过pygame实现曾风靡一时的flappybird游戏。 小鸟x坐标不变,画布左移实现…

分享5款对工作有帮助的小工具

​ 在职场中,简单而高效的工具是我们事业成功的一部分。这五款工具可能会成为你职业生涯中的得力助手。 1.图片标注——iPhotoDraw ​ iPhotoDraw是一款图片标注软件,可以在图片上添加文字、符号、尺寸、放大细节等注释对象,增加图片的信息…

〖Python网络爬虫实战㊹〗- JavaScript Hook 的用法

订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000 python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,订阅本专栏前必读关于专栏〖Python网络爬虫实战〗转为付费专栏的订阅说明作者&#xff1…