Nginx part3 创建一个https的网站

目录

HTTPS

公钥和密钥

加密解密方式:

https搭建步骤

强调一下

1、准备环境

2、配置文件

3、制作证书

4、进行设置


HTTPS

啥是https,根据百度:HTTPS (全称:Hypertext Transfer Protocol Secure),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份保证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。所以可以说https是一个在网站上的加密方法

之前我们拿nginx搭的网站用的协议是http的,所以之前的网站的保密性不是特别高那现在就用nginx来搭建一个https网站

公钥和密钥

公钥:公共密钥 开放

密钥:私有密钥 保密

加密解密方式:

jack发信息给marry

       1、 jack用自己的公钥对信息进行加密传送给marry,marry用jack的私钥进行解密

        公(j)➡️私(j)        不可行:因为用公钥进行加密,公钥一般可以在网站上下载,但私钥在自己的电脑上,如果对方离得远无法进行拷贝,那就不可行

       2、jack用marry的公钥进行加密发给marry,marry用自己的私钥解密

        公(m)➡️私(m) 可行 很私密因为对方的公钥可以下载,对方的私钥下载不了,,用对方的公钥进行加密,则对方要用自己的私钥进行解密,相当私密

        3、jack用自己的私钥进行加密发给marry,marry用jack的公钥进行解密

        私(j)➡️公(j) 不可行 毫无私密性:因为拿自己的私钥进行加密后,解密需要公钥,而公钥都可以在互联网上下载到,所以所有人都可以解密信息

        4、jack用marry的私钥进行加密,marry用自己的公钥进行解密

        不可行,jack无法获得对方的私钥,无法进行加密

所以根据以上可以得到最好的加密方法就是第二种2(对公加密,对私解密

那么https的大致分为三个阶段
(1)认证服务器:浏览器内置一个受信任的CA机构列表,并保存了这些CA机构的证书。第一阶段服务器会提供经CA机构认证颁发的服务器证书,如果认证该服务器证书的CA机构,存在于浏览器的受信任CA机构列表中,并且服务器证书中的信息与当前正在访问的网站(域名等)一致,那么浏览器就认为服务端是可信的,并从服务器证书中取得服务器公钥,用于后续流程。否则,浏览器将提示用户,根据用户的选择,决定是否继续。当然,我们可以管理这个受信任CA机构列表,添加我们想要信任的CA机构,或者移除我们不信任的CA机构。

(2)协商会话密钥:客户端在认证完服务器,获得服务器的公钥之后,利用该公钥与服务器进行加密通信,协商出两个会话密钥,分别是用于加密客户端往服务端发送数据的客户端会话密钥,用于加密服务端往客户端发送数据的服务端会话密钥。在已有服务器公钥,可以加密通讯的前提下,还要协商两个对称密钥的原因,是因为非对称加密相对复杂度更高,在数据传输过程中,使用对称加密,可以节省计算资源。另外,会话密钥是随机生成,每次协商都会有不一样的结果,所以安全性也比较高。

(3)加密通讯:此时客户端服务器双方都有了本次通讯的会话密钥,之后传输的所有Http数据,都通过会话密钥加密。这样网路上的其它用户,将很难窃取和篡改客户端和服务端之间传输的数据,从而保证了数据的私密性和完整性

https搭建步骤

强调一下

key是私钥文件

csr是证书签名请求文件,用于提交给证书颁发机构(CA)对证书签名

crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息

1、准备环境

还是之前的nginx,在linux上下好nginx后(记得启动nginx,以及开机自启动,关闭防火墙),输入指令nginx -V,注意是大写的V,小写的v只能显示版本啥的,大写的还会显示其编译器以及带有的模块

在显示出来的模块里寻找是否有一个“--with-http_ssl_module”若没有则需要安装ssl模块,则需要输入yum install mod_ssl即可

2、配置文件

        证书文件:/.../xxxx.crt结尾——公钥

        私钥文件:/.../xxxx.key结尾——私钥

        (证crt,私key)

 进入nginx的配置文件里“ vim etc/nginx/nginx.conf " 找到server板块,你可以在里面看到http的设置和https的设置(https,没设置的话是被注释掉的)

红线前的为之前所设置的http网站的内容,红线下的则是还未设置的https的内容,设置前需要知道非对称加密算法

Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2;            #监听端口号
#        listen       [::]:443 ssl http2;
#        server_name  _;                        #域名
#        root         /usr/share/nginx/html;    #网页的位置
#
#        ssl_certificate "/etc/pki/nginx/server.crt";    #crt结尾就是证书的路径
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";    #key结尾就是私钥的路径
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers PROFILE=SYSTEM;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }}

首先在根目录下“/”创建一个目录及文件:mkdir -p /www/wy      然后往这个wy的文件里传输html文件

3、制作证书

将证书制作到etc目录下的nginx里

制作私钥使用命令:openssl genrsa -aes128 2048 > /etc/nginx/wy.key

openssl genrsa -aes128 2048 > /etc/nginx/wy.key
openssl——安装的模块里的指令
genrsa——rsa 算法
-aes128——加密位数
2048——设置
>——输出
/etc/nginx/wy.key——输出的位置

制作好后,需要对私钥加密,就需要输入密码,制作好的私钥就在/etc/nginx里,可以用cat来查看

制作证书使用的命令:

openssl req -utf8 -new -key /etc/nginx/wy.key -×509 -days 365 -out /etc/nginx/wy.crt

openssl req -utf8 -new -key /etc/nginx/wy.key -x509 -days 365 -out /etc/nginx/wy.crtopenssl——调用的命令
req——需要
-utf8——用到的字符集
-new——新的
-key /etc/nginx/wy.key——该证书所匹配的私钥位置
-x509——证书的协议
-days 365——证书的有效期
-out /etc/nginx/wy.crt——将证书输出的位置 扩展名为crt

证书的信息还需要录入:

[root@server ~]# openssl req -utf8 -new -key /etc/nginx/wy.key -x509 -days 365 -out /etc/nginx/wy.crt
Enter pass phrase for /etc/nginx/wy.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]:86        #国家的编号,中国为86
State or Province Name (full name) [Some-State]:shan'xi      #所在的省份
Locality Name (eg, city) []:xi'an                            #所在省份的城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:bewbew    #公司名
Organizational Unit Name (eg, section) []:rhce               #部门名字
Common Name (e.g. server FQDN or YOUR name) []:server        #你的主机名
Email Address []:66666@qq.co                                 #你的邮箱

然后即可,现在私钥,证书都有了

但nginx有个特殊项:要将私钥的密钥给去掉

cd到etc里的nginx,复制一份密钥,

然后即可

4、进行设置

输入vim /etc/nginx/nginx.conf   找到server模块,将下面被注释掉的https给修改了

可以将ipv6那行删除掉

# Settings for a TLS enabled server.
#server {listen       443 ssl http2;        #监听端口server_name  10.211.55.10;         #设成ip,不设置也可以  root         /www/wy;              #网页所在的位置ssl_certificate "/etc/nginx/wy.crt";    #证书所在的位置ssl_certificate_key "/etc/nginx/wy.key";    #私钥所在的位置# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;error_page 404 /404.html;location = /40x.html {}error_page 500 502 503 504 /50x.html;location = /50x.html {}}}

最重要的就是有注释的那几行,其他的不用进行修改,也可以将其删除,检查没问题后将其保存退出即可,退出后检查一下nginx是否有问题“nginx -t”没问题后重启nginx即可

最后在浏览器里输全网址https://xxxx

由于是我自己做的证书,不具备公信力,就会显示警告若要进入进行访问就可以点击“显示详细信息”或者“高级”里面

为了使访问更加方便,即将http自动转换成https,照样打开nginx的配置文件,将http进行配置

配置好ip地址后,删除文件所在位置,输入“return 301 https://10.211.55.10”意思是该网址已永久更换至https://10.211.55.10,最后进行重启nginx

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

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

相关文章

HCIE学习笔记----OSPF详解

OSPF邻居建立的条件 OSPF建立邻居“41”条件总结 4个一致 一个不一致 1.保证接口的前缀 网络信息一致 2.保证ospf区域号和区域类型一致 3.hello包间隔时间和死亡时间一致 4.认证类型和认证认证信息一致 5.路由器的ID不一致 保证唯一性 一-----OSPF 邻接关系建立过程与状…

耦合协调分析模型

耦合协调分析模型(Coupling Coordination Analysis Model)是一种用于评估两个或多个系统之间相互作用和协调性的数学模型。广泛应用于多个领域,包括但不限于社会科学、经济学、环境科学和工程学。耦合协调分析模型的核心在于量化系统间的耦合…

Android UI:动画:帧动画

文章目录 定义两种创建方式 代码:直接创建对象XML:加载动画文件,创建对象API 类 动画类操作 绑定ImageView启动动画总结 定义 按顺序展示不同的图片 两种创建方式 代码:直接创建对象 XML:加载动画文件,…

本地项目上传到gitee

1. 新建仓库,不要勾选 2. git init git add . git commit -m "test" git remote add origin 【url】 git push --set-upstream origin master

MySQL·索引

目录 索引的意义 索引的理解 为何IO交互要是 Page 理解Page 其他数据结构为何不行? 聚簇索引 VS 非聚簇索引 索引操作 主键索引操作 唯一键索引操作 普通索引的创建 总结 全文索引 索引的意义 索引:提高数据库的性能,索引是物美…

css backdrop-filter 实现背景滤镜

官方给出的定义是:backdrop-filter属性允许您将图形效果(如模糊或颜色偏移)应用于元素后面的区域。因为它适用于元素后面的所有内容,所以要查看元素或其背景的效果,需要透明或部分透明。 大致分为以下10种&#xff1a…

云计算十三课

centos安装 点击左上角文件 点击新建虚拟机 点击下一步 点击稍后安装操作系统,下一步 选择Linux(l)下一步 设置虚拟机名称 点击浏览选择安装位置 新建文件夹设置名称不能为中文,点击确定 点击下一步 设置磁盘大小点击下一步…

windows 系统远程连接 redis 服务

一、引言 Redis是一款开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。在开发过程中,我们可能需要从Windows系统远程连接到Redis服务器以进行各种操作。本文将详细介绍如何在Windows系统上远程连接Redis服务。 二、前…

【linux软件基础知识】完全公平调度(2)

每个进程的 CPU 时间比例 在两个可运行进程具有不同的好值的情况下,完全公平调度程序 (CFS) 根据权重为每个进程分配不同比例的处理器时间。 进程的权重由其nice值决定。 假设一个进程具有默认的 Nice 值(零),而另一个进程的 Ni…

rust开发web服务器框架,github排名对比

Rocket Star最多的框架 github仓库地址:GitHub - rwf2/Rocket: A web framework for Rust. Rocket 是一个针对 Rust 的异步 Web 框架,重点关注可用性、安全性、可扩展性和速度。 Axum 异步运行时 githuh仓库地址:GitHub - tokio-rs/axum: …

高精度原理介绍及代码实现

目录 高精度 引入 使用场景 实现原理 高精度加法 数据存储 加法实现 总代码 高精度减法 与加法的不同点: 总代码 高精度乘法 总代码 高精度除法 总结 总注意点 减法注意点 高精度 引入 所谓高精度并不是很高级难懂的东西,只是对传统的…

【C++】多态(上)超详细

封装,继承,多态不只是C的三大特性,而是面向对象编程的三大特性。 什么是多态: 不同的对象做同一件事情,结果会出现多种形态。 1.满足多态的几个条件 1.父子类完成虚函数重写(需要满足三同:函…

历史文件清理

应用系统中可能会被要求保存一些文件记录,比如配置文件修改的备份,日志文件,备份文件。不过历史文件不一定是要求永久保留的,一般会有合规要求和业务要求,超过一定期限的可以删除,以释放空间,提…

VP Codeforces Round 944 (Div 4)

感受&#xff1a; A~G 其实都不难&#xff0c;都可以试着补起来。 H看到矩阵就放弃了。 A题&#xff1a; 思路&#xff1a; 打开编译器 代码&#xff1a; #include <iostream> #include <vector> #include <algorithm> #define int long long using na…

ETL(抽取、转换、加载)

ETL&#xff08;抽取、转换、加载&#xff09; 目录 ETL&#xff08;抽取、转换、加载&#xff09; 1.抽取&#xff08;Extract&#xff09; 2.转换&#xff08;Transform&#xff09; 3. 加载&#xff08;Load&#xff09; 4.ETL 工具和技术 5.总结 ETL&#xff08;抽取、转…

编写Spring项目:流程与思路指南

编写Spring项目&#xff1a;流程与思路指南 本文以初级工程师的视角&#xff0c;介绍了Spring项目开发的全流程&#xff0c;从项目初始化到部署上线&#xff0c;每一步骤都配有必要的指导和建议。希望这份指南能够帮助初级工程师快速上手Spring项目开发&#xff0c;并在未来的…

【机器学习】数据分析特征

参考来源&#xff1a;https://www.bilibili.com/video/BV1nt411r7tj 1.数据质量分析 缺失值 异常值&#xff1a;箱线图 一致值&#xff08;多数据源不一致&#xff09; 2.图像可视化 占比&#xff1a;饼图、气泡图&#xff08;2-5维&#xff09; 波动图&#xff1a;折线…

Windows Docker 使用 httpd 部署静态 Web 站点

一、简介 httpd 是 Apache超文本传输协议&#xff08;HTTP&#xff09;服务器的主程序&#xff0c;是一个独立运行的后台进程&#xff0c;专门负责处理 HTTP 请求。它通过建立子进程或线程的池来高效管理请求&#xff0c;确保服务器能够迅速响应客户端的需求。httpd 因其高效率…

MySQL查询篇-聚合函数-窗口函数

文章目录 distinct 关键字聚合函数常见的聚合函数group by和having 分组过滤 窗口函数with as窗口聚合函数排名窗口函数值窗口函数 distinct 关键字 distinct 去重数据&#xff0c;ps:null值也会查出来 select distinct column from table;聚合函数 常见的聚合函数 select …

[AutoSar]BSW_Diagnostic_002 DCM模块介绍

目录 关键词平台说明背景一、DCM所处架构位置二、DCM 与其他模块的交互三、DCM 的功能四、DCM的内部子模块4.1 Diagnostic Session Layer (DSL)4.1 DSL 与其他模块的交互 4.2 Diagnostic Service Dispatcher (DSD)4.3 Diagnostic Service Processing (DSP)4.4 小结 关键词 嵌入…