Nginx part3 创建一个https的网站

news2025/3/1 10:47:07

目录

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.crt

openssl——调用的命令
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.coloradmin.cn/o/1681603.html

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

相关文章

AI大语言模型在公共服务中的应用实例

随着计算机技术的飞速发展,人工智能已经成为了当今科技领域的热门话题。从早期的图灵测试到现在的深度学习和神经网络,人工智能已经取得了令人瞩目的成就。特别是近年来,大数据、云计算、高性能计算等技术的发展为人工智能的研究提供了更加广…

AI预测福彩3D采取887定位大底=23策略+杀断组+杀组选+杀和尾+杀和值012缩水测试5月16日预测第2弹

昨天的88723大底测试第一次测试,已经成功命中! 今天继续测试,仍旧目标为:10期中至少5中期。好了,废话不多说了,直接上结果吧~ 首先,887定位如下: 百位:5,7,6,4,2,9,0,1…

玩转Matlab-Simscape(初级)- 08 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真(案例实战)

** 玩转Matlab-Simscape(初级)- 08 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真(案例实战) ** 目录 玩转Matlab-Simscape(初级)- 08 - 基于Solidworks、Matlab Simulink、COMSOL的协同仿真&…

信息安全相关内容

信息安全 安全防护体系 安全保护等级 安全防护策略 安全技术基础 安全防护体系 安全防护体系有7个等级 安全保护等级 安全保护等级有5个等级,从上到下是越来越安全的用户自主其实就是用户自己本身具有的相应的能力 安全防护策略 安全策略是对抗攻击的主要策略安全日志: …

(论文笔记)TABDDPM:使用扩散模型对表格数据进行建模

了解diffusion model:什么是diffusion model? 它为什么好用? - 知乎 摘要 去噪扩散概率模型目前正成为许多重要数据模式生成建模的主要范式。扩散模型在计算机视觉社区中最为流行,最近也在其他领域引起了一些关注,包括语音、NLP…

Spring Security实现用户认证一:简单示例

Spring Security实现用户认证一:简单示例 1 原理1.1 用户认证怎么进行和保存的?认证流程SecurityContext保存 2 创建简单的登录认证示例2.1 pom.xml依赖添加2.2 application.yaml配置2.3 创建WebSecurityConfig配置类2.4 测试 1 原理 Spring Security是…

全栈式数据统计:Flask+Pandas按年,季度,月统计显示

话不多说,有图有源码 1.实现效果: 按季度统计 按月度统计: 2.实现源码: 2.1)test_pandashtml.py from flask import Flask, render_template import pandas as pdapp Flask(__name__)# 自定义千分位格式化函数 def format_thousands(x):return f{x:,.2f}app.route(/) def …

JVS物联网模拟点位:如何配置并自动生成点位数据全教程

模拟点位 功能描述 模拟点位常用于业务的调试或数据展示,通过配置对应点位实现自动生成点位数据的功能。 界面操作 如下图所示,从模拟点位菜单进入模拟点位管理界面 模拟点位新增 点击新增按钮,如下图所示: ①:用户…

一键解锁!贸易行业实现银行与财务系统秒级对接,效率飙升!

客户介绍 某贸易有限公司是一家实力雄厚的工贸一体跨国集团企业。作为行业内的佼佼者,该公司以出口家纺产品和生产销售建材洁具为核心业务。公司始终坚持以市场为导向,不断创新和优化产品和服务,以满足不断变化的市场需求。 客户痛点 以往&…

猛兽派对是什么游戏 猛兽派对攻略大全 苹果电脑怎么玩《猛兽派对》?

猛兽派对是多人派对类型的游戏,该款游戏的动作基于物理原理设计的,体验游戏玩家可以选择自己喜欢的小动物角色参加派对,游戏内具有很多不同的关卡可供挑战。 在steam平台上,猛兽派对对应英文名称是PartyAnimals,官方正…

服务器数据恢复—服务器重装系统导致分区丢失的数据恢复案例

服务器数据恢复环境: 一台服务器MD1200磁盘柜通过RAID卡创建了一组RAID5阵列并分配一个LUN。在Linux系统层面将该LUN划分了sdc1和sdc2两个分区。通过LVM扩容的方式将sdc1分区加入到了卷组中的一个逻辑卷中,sdc2分区格式化为XFS文件系统使用。Linux操作系…

Qt编译和使用freetype矢量字库方法

在之前讲过QT中利用freetype提取字库生成图片的方法: #QT利用freetype提取字库图片_qt freetype-CSDN博客文章浏览阅读1.2k次。这是某个项目中要用到的片段,结合上一篇文章#QT从字体名获取字库文件路径使用// 保存位图int SaveBitmapToFile(HBITMAP hBi…

一行代码实现vip标志的显示

需求说明 在项目中,后期添加了一种用户类型。需要再用户头像右下角显示一个vip的标志。问题是只要有头像的地方都要显示。而有头像的地方很多,设置到的接口也很多。后面考虑通过一个工具类,将这个功能外挂到原来的业务需要的地方。 实现效果…

二进制部署Kubernetes集群——单Master和Node组件

前言 本文将介绍如何使用二进制文件手动搭建 Kubernetes v1.20 集群。通过这种方法,我们可以更好地理解 Kubernetes 的内部工作原理,并具备更大的灵活性和控制权。下面将逐步构建 Kubernetes 集群,并进一步了解其各个组件之间的交互和配置。…

【python量化交易】—— 双均线择时策略 - Qteasy自定义交易策略【附源码】

使用qteasy自定义并回测双均线交易策略 使用qteasy自定义并回测一个双均线择时策略策略思想导入qteasy模块创建一个新的策略回测交易策略,查看结果 使用qteasy自定义并回测一个双均线择时策略 我们今天使用qteasy来回测一个双均线择时交易策略,qteasy是…

kettle从入门到精通 第六十一课 ETL之kettle 任务调度器,轻松使用xxl-job调用kettle中的job和trans

想真正学习或者提升自己的ETL领域知识的朋友欢迎进群,一起学习,共同进步。若二维码失效,公众号后台加我微信入群,备注kettle。 1、大家都知道kettle设计的job流程文件有个缺点:只能设置简单的定时任务,无法…

React 第三十七章 Scheduler 最小堆算法

在 Scheduler 中&#xff0c;使用最小堆的数据结构在对任务进行排序。 // 两个任务队列 var taskQueue: Array<Task> []; var timerQueue: Array<Task> [];push(timerQueue, newTask); // 像数组中推入一个任务 pop(timerQueue); // 从数组中弹出一个任务 time…

HNU-算法设计与分析-作业3

第三次作业【动态规划】 文章目录 第三次作业【动态规划】<1>算法实现题 3-1 独立任务最优解问题<2>算法实现题 3-4 数字三角形问题<3>算法实现题 3-8 最小m段和问题<4>算法实现题 3-25 m处理器问题 <1>算法实现题 3-1 独立任务最优解问题 ▲问…

Windows 安装mysql 和 Redis

mysql Windows 图形界面安装&#xff1a; 下载mysql https://dev.mysql.com/downloads/ 1.下载完成后,找到文件双击安装程序 2. 等待一段时间&#xff0c; 选择默认&#xff0c;点击next 3. 选择安装目录 下载mysql产品 安装mysql产品 产品配置向导 安装…