nginx配置https加密

news2024/9/24 23:29:07

以下操作版本为Ubuntu2004,文件位置可能略有不同

https 功能

Web网站的登录页面通常都会使用https加密传输的,加密数据以保障数据的安全,HTTPS能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议,HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过TLS进行加密,所以传输的数据都是加密后的数据。
在这里插入图片描述

https 实现过程如下:
1.客户端发起HTTPS请求:
客户端访问某个web端的https地址,一般都是443端口
2.服务端的配置:
采用https协议的服务器必须要有一套证书,可以通过一些组织申请,也可以自己制作,目前国内很多网站都
自己做的,当你访问一个网站的时候提示证书不可信任就表示证书是自己做的,证书就是一个公钥和私钥匙,
就像一把锁和钥匙,正常情况下只有你的钥匙可以打开你的锁,你可以把这个送给别人让他锁住一个箱子,里
面放满了钱或秘密,别人不知道里面放了什么而且别人也打不开,只有你的钥匙是可以打开的。
3.传送证书:
服务端给客户端传递证书,其实就是公钥,里面包含了很多信息,例如证书得到颁发机构、过期时间等等。
4.客户端解析证书:
这部分工作是有客户端完成的,首先回验证公钥的有效性,比如颁发机构、过期时间等等,如果发现异常则会
弹出一个警告框提示证书可能存在问题,如果证书没有问题就生成一个随机值,然后用证书对该随机值进行加
密,就像2步骤所说把随机值锁起来,不让别人看到。
5.传送4步骤的加密数据:
就是将用证书加密后的随机值传递给服务器,目的就是为了让服务器得到这个随机值,以后客户端和服务端的
通信就可以通过这个随机值进行加密解密了。
6.服务端解密信息:
服务端用私钥解密5步骤加密后的随机值之后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进
行对称加密,对称加密就是将信息和私钥通过算法混合在一起,这样除非你知道私钥,不然是无法获取其内部
的内容,而正好客户端和服务端都知道这个私钥,所以只要机密算法够复杂就可以保证数据的安全性。
7.传输加密后的信息:
服务端将用私钥加密后的数据传递给客户端,在客户端可以被还原出原数据内容。
8.客户端解密信息:
客户端用之前生成的私钥获解密服务端传递过来的数据,由于数据一直是加密的,因此即使第三方获取到数据
也无法知道其详细内容。

htpps配置参数

nginx 的https 功能基于模块ngx_http_ssl_module实现,因此如果是编译安装的nginx要使用参数ngx_http_ssl_module开启ssl功能,但是作为nginx的核心功能,yum安装的nginx默认就是开启的,编译安装的nginx需要指定编译参数–with-http_ssl_module开启

官方文档:https://nginx.org/en/docs/http/ngx_http_ssl_module.html

配置参数如下:

ssl on | off;
#为指定的虚拟主机配置是否启用ssl功能,此功能在1.15.0废弃,使用listen [ssl]替代
listen 443 ssl;
ssl_certificate /path/to/file;
#指向包含当前虚拟主机和CA的两个证书信息的文件,一般是crt文件
ssl_certificate_key /path/to/file;
#当前虚拟主机使用的私钥文件,一般是key文件
ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
#支持ssl协议版本,早期为ssl现在是TLS,默认为后三个
ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
#配置ssl缓存
off: #关闭缓存
none: #通知客户端支持ssl session cache,但实际不支持
builtin[:size]#使用OpenSSL内建缓存,为每worker进程私有
[shared:name:size]#在各worker之间使用一个共享的缓存,需要定义一个缓存名称和缓存空间大
小,一兆可以存储4000个会话信息,多个虚拟主机可以使用相同的缓存名称
ssl_session_timeout time;
#客户端连接可以复用ssl session cache中缓存的有效时长,默认5m

自签名证书

包安装的配置文件路径为 /usr/lib/ssl/certs
在这个目录下还有一些其他文件,如果觉得不方便可以单独创建一个文件夹存放

mkdir /apps/nginx -p

自签名CA证书

root@ubuntu2004:/usr/lib/ssl/certs# openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 3650 -out ca.crt
Generating a RSA private key
................................................................................................................................................................................................................................................++++
........++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN #国家代码
State or Province Name (full name) [Some-State]:ZheJiang #省份
Locality Name (eg, city) []:HangZhou 城市名称
Organization Name (eg, company) [Internet Widgits Pty Ltd]:chinaunicom #公司
Organizational Unit Name (eg, section) []:chinacloud #部门
Common Name (e.g. server FQDN or YOUR name) []:ca.chinacloud.org #通用名称
Email Address []:15131416@163.com 邮箱

自制key和csr文件

root@ubuntu2004:/usr/lib/ssl/certs# openssl req -newkey rsa:4096 -nodes -sha256 -keyout chinacloud.key -out chinacloud.csr
Generating a RSA private key
.......................................................................++++
...............++++
writing new private key to 'chinacloud.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:ZheJiang
Locality Name (eg, city) []:HangZhou
Organization Name (eg, company) [Internet Widgits Pty Ltd]:chinaunicom
Organizational Unit Name (eg, section) []:chinacloud
Common Name (e.g. server FQDN or YOUR name) []:ca.chinacloud.org
Email Address []:15131416@163.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:123456

将生成的这4个文件移动到刚才创建的nginx目录下

mv ca.crt ca.key chinacloud.key chinacloud.csr /apps/nginx/

在这里插入图片描述

签发证书
移动完文件后,要到对应的目录下进行操作
最后的这个名称属于自定义名称,如果主机未设置域名,直接使用IP地址也是可以的

root@ubuntu2004:/apps/nginx# openssl x509 -req -days 3650 -in chinacloud.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out www.chinacloud.org 
Signature ok
subject=C = CN, ST = ZheJiang, L = HangZhou, O = chinaunicom, OU = chinacloud, CN = ca.chinacloud.org, emailAddress = 15131416@163.com
Getting CA Private Key

合并CA和服务器证书成一个文件,注意服务器证书在前

root@ubuntu2004:/apps/nginx# ll
total 32
drwxr-xr-x 2 root root 4096 73 17:23 ./
drwxr-xr-x 4 root root 4096 73 17:06 ../
-rw-r--r-- 1 root root 2175 73 17:10 ca.crt
-rw------- 1 root root 3272 73 17:08 ca.key
-rw-r--r-- 1 root root   41 73 17:23 ca.srl
-rw-r--r-- 1 root root 1830 73 17:17 chinacloud.csr
-rw------- 1 root root 3272 73 17:15 chinacloud.key
-rw-r--r-- 1 root root 2053 73 17:23 www.chinacloud.org

root@ubuntu2004:/apps/nginx# cat www.chinacloud.org ca.crt > www.chinacloud.org.pem

https配置

server {
            listen 80;
            listen 443 ssl;
            ssl_certificate /apps/nginx/www.chinacloud.org.pem;
            ssl_certificate_key /apps/nginx/chinacloud.key;
            ssl_session_cache shared:sslcache:20m;
            ssl_session_timeout 30m;
        }

重启nginx并访问验证
在这里插入图片描述
访问成功
在这里插入图片描述

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

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

相关文章

计算机网络 第二章(上)

2.1_1 物理层基本概念_哔哩哔哩_bilibili2.1_1 物理层基本概念是王道计算机考研 计算机网络的第12集视频,该合集共计76集,视频收藏或关注UP主,及时了解更多相关视频内容。https://www.bilibili.com/video/BV19E411D78Q/?p12&spm_id_from…

【近场社交项目】数据库系统期末设计——需求分析部分

【近场社交项目】数据库系统设计——需求分析😎 前言🙌1.需求求分析(用户部分为例)1.2用户数据字典1.2.1用户信息表(数据结构):数据项间的关系和结构定义: 1.2.2.个人资料表(数据结构…

10、SpringBoot集成Redis

总体概述 jedis-lettuce-RedisTemplate三者的联系 本地Java连接Redis常见问题 ● bind配置请注释掉 ● 保护模式设置为no ● Linux系统的防火墙设置 ● Redis服务器的IP地址和密码是否正确 ● 忘记写Redis的服务端口号和auth密码 1、集成Jedis 是什么 Jedis Client是Redis官…

【MATLAB笔记】基础函数及向量

一、基础函数绘制 版本:Matlab2021a 实例1:生成向量 >> x0:0.1:30; >> ysin(x).*cos(x); >> plot(x,y) 实例2:创建向量 >> xlinspace(0,2*pi); >> ysin(x) >> plot(x,y) 二、向量的点积 >> a…

ueditor富文本编辑器使用

下载百度富文本编辑器 链接&#xff1a;https://pan.baidu.com/s/1E4K8e0WCy9_L6z0-Dz3JkQ?pwdc2gf 提取码&#xff1a;c2gf <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" co…

pgrouting连通性分析

官方文档 1、安装pgrouting库 参考&#xff1a;pgrouting安装 主要涉及的两个函数&#xff1a; 1、 pgr_createTopology&#xff1a;创建空间拓扑&#xff0c;数据自动保存至新创建的表<edge_table>_vertices_pgr&#xff0c;将空间表的linestr的geometry数据拆分&…

云原生系列之管理docker容器中的数据管理实战

前言 在生产环境中使用docker,一方面需要对数据进行保存或者在多个容器之间进行数据共享; 另一方面在docker的容器被删除之后,并不会保留容器的状态信息。 想要实现docker容器的信息持久化,就涉及到docker的数据管理,今天我们就来聊聊docker数据管理那些事。 文章目录 …

Vue3:在 VSCode 中如何成功安装 Mockjs 及成功引入 Mock 的详细过程

Ⅰ、Mock 简介&#xff1a; 1、什么是 Mock&#xff1f; 其一、Mock 的解释一&#xff1a; Mock 服务是指在测试过程中对于某些复杂&#xff08;或者不太好构造&#xff09;的对象&#xff0c;用一个虚拟的对象替代它&#xff1b;对于前端来说&#xff0c;就是后台数据还没有…

Python编程入门:了解Python及其由来

在计算机编程的世界中&#xff0c;Python已经成为一门备受欢迎的高级编程语言。它的简洁、易读和功能强大使得它成为众多开发者的首选。但你是否了解Python的由来以及为什么它如此受欢迎呢&#xff1f;在本篇博客中&#xff0c;我们将一起探索Python编程语言的起源和一些相关知…

shell中awk命令常用用法总结

1、获取分隔的内容 以点为分隔符获取IP地址的最后一个字段 echo $ip | awk -F . {print $4}

YOLO系列v1-v8

YOLO是Region-free方法&#xff0c;只需要一次扫描&#xff0c;也被称为单阶段&#xff08;1-stage&#xff09;模型。而Region-based方法方法&#xff0c;如mask-rcnn &#xff0c;被称为两阶段&#xff08;2-stage&#xff09;方法。 YOLOv1-v3是原作者&#xff0c;v4和v7是…

【C语言】指针进阶[下](回调函数(模拟实现qsort-采用冒泡方式))

简单不先于复杂&#xff0c;而是在复杂之后。 目录 1. 回调函数 1.1 qsort 函数的使用 1.2 qsort 排序结构体类型 1.3 回调函数模拟实现 qsort&#xff08;排序整型&#xff09; 1.4 回调函数模拟实现 qsort&#xff08;排序结构体类型&#xff09; 1. 回调函数 回…

【WebAssembly】编译c++ Demo ->HelloWorld

好的开始等于成功了一半&#xff0c;本篇逐条讲解如何将一个cpp通过WebAssembly编译并运行在网页上。 一、环境准备 前提条件 需要安装CMake&#xff0c;VS&#xff0c;python2.7及以上 拉取emsdk代码 仓库地址&#xff1a;GitHub - emscripten-core/emsdk: Emscripten SD…

04_前端包管理工具模块化

注意事项: ​ 改模块代码不用重启服务器,修改config文件的时候需要重启服务器 ​ nvm的安装路径和node的安装路径不能在同一路径下面 ​ 有乱码问题使用管理员权限进行使用use方法 下载安装node ​ 使用命令进行安装 1.nvm list 查看已下载所有的node版本 2.nvm install…

VR工地安全虚拟现实体验:多种事故模拟,第三人称回看

建筑工地五大伤害是指&#xff1a;高处坠落、坍塌、物体打击、机械伤害、触电。利用VR(虚拟现实)技术体验建筑工地五大伤害&#xff0c;可以为建筑工人提供更真实、更安全的工作环境&#xff0c;同时也可以帮助他们更好地了解和掌握工作技能。 以下是VR工地安全虚拟现实体验软件…

C++ Primer(读书笔记)

C源文件通常以.cc、.cxx、.cpp、.cp、.C作为后缀来命名 C语言未定义输入输出语句&#xff0c;而是提供了一个全面的标准库来提供IO机制&#xff0c;对应 iostream、fstream、sstream std::cout<<"Enter Two Numbers"<<std::endl;&#xff0c;这条语句执…

在四维轻云使用过程中,出现这些问题应该怎么办?

在四维轻云的使用过程中&#xff0c;可能会出现在地图中无法显示加载的点云或倾斜摄影模型数据、无法上传数据等问题。出现以下这些问题时&#xff0c;可采取一定的措施来解决&#xff0c;若无法解决可联系工作人员处理。 1、在地图中无法显示加载的点云或倾斜摄影模型数据&am…

推特色情机器人账号泛滥,马斯克的“治推谋略”何在?

据BleepingComputer消息&#xff0c;推特虚假机器人账户泛滥的问题不仅还未得到解决&#xff0c;其中传播色情信息的机器人账户近期反而严重泛滥。 在安全研究小组MalwareHunterTeam最近的一项调查研究中曝光了多个传播虚假消息的机器人账户&#xff0c;它们为真实用户发出的帖…

为汽车制造商赋能,CarFramework定制AOSP技术,提升汽车信息娱乐系统

车载CarFramework&#xff08;车载框架&#xff09;是Android Automotive操作系统中的一个关键组件&#xff0c;它提供了与车辆系统交互的基础设施和功能。CarFramework旨在为车载应用程序提供统一的开发和执行环境&#xff0c;以便它们可以与车辆的硬件和软件进行交互。CarFra…

华为云专家出品《字节码编程指南》电子书上线

Javaagent非入侵全链路监控设计和实现入门 ASM、Javassist、Byte-Buddy三套字节码框架案例 市面上少有的成体系字节码知识 都在这里&#xff01; 华为云出品《深入理解边缘计算》电子书上线 本书适合超过3年经验的高级开发者&#xff0c;适合对字节码编程有学习需求或想拓展…