RHCE-Web-nginx http实验和nginx https实验

news2024/12/23 1:53:32

一、web服务器简介

1)什么是www

www world wide web 的缩写,也就是全球信息广播的意思。通常说的上网就是使用 www 来查询用户
所需要的信息。 www 可以结合文字、图形、影像以及声音等多媒体,并通过可以让鼠标单击超链接的方
式将信息以 Internet 传递到世界各处去。
与其他服务器类似,当你连接上 www 网站,该网站肯定会提供一些数据,而你的客户端则必须要使用可
以解析这些数据的软件来处理,那就是浏览器。 www 服务器与客户端浏览器之间的连接图。

 

1 www 所用的协议:浏览器怎样向 web 服务器请求数据以及服务器怎样把文档传送给浏览器呢?这就是
http 协议来定义的,( HyperTextTransportProtocol HTTP ,超文本传输协议)。
2 www 服务器需要提供可让客户端浏览的平台。目前最主流的 Web 服务器是 Apache Microsoft
Internet 信息服务器( InternetInformationServices IIS )和 unixnginx
3 、服务器所提供的最主要数据是超文本标记语言( HyperTextMarkupLanguage HTML )、多媒体
文件(图片、影像、声音、文字等,都属于多媒体或称为超媒体), HTML 只是一些纯文本数据,通过所谓
的标记来规范所要显示的数据格式。
4 、客户端收到服务器的数据之后需要软件解析服务器所提供的数据,最后将效果呈现在用户的屏幕上。那
么著名的浏览器就有内建在 Windows 操作系统内的 IE 浏览器了,还有 Firefox 浏览器和 Google
chrome 浏览器。

2)网址及HTTP简介

web 服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在
某个特殊的目录下面,这个目录就是我们整个网站的首页,在 nginx 中,这个目录默认
/usr/share/nginx/html/ 。浏览器是通过你在地址栏中输入你所需要的网址来取得这个目录的数据
的。
URL Uniform Resource Locator ,统一资源定位符,对可以从互联网上得到的资源的位置和访问
方法的一种简洁的表示,是互联网上标准资源的地址。
网址格式: < 协议 >://< 主机或主机名 >[:port]/< 目录资源 , 路径 >
浏览器常支持的协议有: http https ftp 等。
主机地址或者主机名:主机地址就是服务器在因特网所在的 IP 地址。如果是主机名的话,那么
就需要域名解析了。
端口号( port ): http 80 https 443 IANA :互联网数字分配机构)
0-1023 :众所周知,永久地分配给固定的应用程序使用,特权端口(只有管理员有权限
启用并让进程监听)
1024-41951 :亦为注册端口,但要求不是特别严格,分配给程序注册为某应用使用:
3306/TCP
41952-60000 :客户端程序随机使用的端口,动态端口,或私有端口
http 请求方法:在 http 通信中,每个 http 请求报文都包含一个方法,用以告诉 web 服务器端需要执
行哪些具体的动作,这些动作包括:获取指定 web 页面、提交内容到服务器、删除服务器上资源文
件等。

 

状态代码:由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
1xx :指示信息 —— 表示请求已接收,继续处理
2xx :成功 —— 表示请求已被成功接收、理解、接受
3xx :重定向 —— 要完成请求必须进行更进一步的操作
4xx :客户端错误 —— 请求有语法错误或请求无法实现
5xx :服务器端错误 —— 服务器未能实现合法的请求
常见状态代码、状态描述的说明如下:
200 OK :客户端请求成功
400 Bad Request :客户端请求有语法错误,不能被服务器所理解
401 Unauthorized :请求未经授权,这个状态代码必须和 WWW-Authenticate 报头域
一起使用
403 Forbidden :服务器收到请求,但是拒绝提供服务
404 Not Found :请求资源不存在,举个例子:输入了错误的 URL
500 Internal Server Error :服务器发生不可预期的错误
503 Server Unavailable :服务器当前不能处理客户端的请求,一段时间后可能恢复正常
HTTP 报文: http 报文中有很多行内容,这些行的字段内容都是由一些 ASCII 码串组成,但各个字段
的长度是不同的。 http 报文可分为两种,一种是从 web 客户端发往 web 服务器的 http 报文,称为请
求报文。另外一种是从 web 服务器发往 web 客户端的报文,称为响应报文 。
        http请求报文由请求行、请求头部、空行和请求报文主体几个部分组成

         http响应报文由起始行、响应头部、空行和响应报文主体这几个部分组成

 

MIME Multipurpose Internet Mail Extension ,多用途因特网邮件扩展)最初是为了解决在不同
的电子邮件系统之间搬移报文时存在的问题。后来 http 也支持了这个功能,用它来描述数据并标记
不同的数据内容类型。
web 服务器响应 http 请求时,会为每一个 http 对象数据加一个 MIME 类型。当 web 浏览器获取到
服务器返回的对象时,会去查看相关的 MIME 类型,并进行相应的处理。
MIME 类型存在于 HTTP 响应报文的响应头部信息里,它是一种文本标记,表示一种主要的对象类型
和一个特定的子类型。常见的 MIME 类型:

 

3http协议请求的工作流程

        (1 )终端客户在 web 浏览器地址栏输入访问地址 http://www.ceshi.com:80/index.html
        (2 web 浏览器请求 DNS 服务器把域名 www.ceshi.com 解析成 web 服务器的 IP 地址
        (3 web 浏览器将端口号(默认是 80 )从访问地址( URL )中解析出来
        (4 web 浏览器通过解析后的 ip 地址及端口号与 web 服务器之间建立一条 TCP 连接
        (5 )建立 TCP 连接后, web 浏览器向 web 服务器发送一条 HTTP 请求报文
        (6 web 服务器响应并读取浏览器的请求信息,然后返回一条 HTTP 响应报文。
        (7 web 服务器关闭 HTTP 连接,关闭 TCP 连接, web 浏览器显示访问的网站内容到屏幕上。

 

二、web服务器的类型

1)仅提供用户浏览的单向静态网页

单纯是由服务器单向提供数据给客户端, Server 不需要与 client 端有互动,所以你可以到该网站上去浏
览,但是无法进行数据的上传。

2)提供用户互动接口的动态网站

这种类型的网站可以让服务器与用户互动,常见的例如留言板,博客。这种类型的网站需要通过 网页程
序语言 来实现与用户互动的行为。常见的例如: PHP 网页程序语言,配合数据库系统来进行数据的读、
写。当你在向服务器请求数据时,其实是通过服务器端同一个网页程序在负责将数据读出或写入数据
库,变动的是数据库的内容,网页程序并没有任何改变。
另外一种交互式的动态网页主要是在客户端实现。服务端将可执行的程序代码( JavaScript )传送给客户 端,客户端的浏览器如果提供 JavaScript 的功能,那么该程序就可以在客户端的计算机上面工作了;另外
一种可在客户端执行的就是 flash 动画格式,在这种动画格式内还可以进行程序设计。搭建动态网站的需
求:

 三、web服务器基本配置 

服务器端:此处使用 nginx 提供 web 服务, RPM 包获取: http://nginx.org/packages/

 

[root@localhost ~]# dnf install nginx -y
[root@localhost ~]# nginx -v
[root@localhost ~]# nginx -V
[root@localhost ~]# rpm -ql nginx
[root@localhost httpd]# tree /etc/nginx
[root@localhost ~]# tree /etc/nginx/
/etc/nginx/
├── conf.d #子配置文件目录
├── default.d
├── fastcgi.conf
├── fastcgi.conf.default
├── fastcgi_params #用以翻译nginx的变量供php识别
├── fastcgi_params.default
├── koi-utf
├── koi-win
├── mime.types #用以配置支持的媒体文件类型
├── mime.types.default
├── nginx.conf #主配置文件
├── nginx.conf.default
├── scgi_params
├── scgi_params.default
├── uwsgi_params #用以配置nginx的变量供python识别
├── uwsgi_params.default
└── win-utf
[root@localhost ~]# tree /usr/share/nginx/html/ #默认的nginx网站根目录
[root@localhost ~]# tree /var/log/nginx/ #nginx的日志文件所在目录
#nginx服务主配置文件nginx.conf的结构
[root@localhost nginx]# grep ^[^#] /etc/nginx/nginx.conf
=========全局配置(无{}标志)=======================
user nginx; #进程所属用户
worker_processes auto; #worker数量
1
2
3
4
5
error_log /var/log/nginx/error.log; #错误日志存放路径
pid /run/nginx.pid; #pid文件路径
include /usr/share/nginx/modules/*.conf; #include导入的功能模块配置文件
=========全局配置(无{}标志)=======================
==========性能配置(有{}标志)=================
events {
worker_connections 1024; #TCP连接数
}
==========性能配置(有{}标志)=================
=========http模块配置(有{}标志)==================
http { #http区块开始
log_format main '$remote_addr - $remote_user [$time_local] "$request"
'
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'; #错误日
志格式
access_log /var/log/nginx/access.log main; #访问日志路径
sendfile on; #开启高效文件传输模式
tcp_nopush on; #性能优化参数
tcp_nodelay on; #性能优化参数
keepalive_timeout 65; #持久连接时间或超时时间
types_hash_max_size 4096; #性能优化参数
include /etc/nginx/mime.types; #可解析的静态资源类型
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf; #子配置文件存放路径
server { #server区块开始
listen 80; #监听端口
listen [::]:80;
server_name _; #服务器的名字
root /usr/share/nginx/html; #主页存放路径
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf; #子配置文件存放路径
error_page 404 /404.html; #404错误返回的页面
location = /40x.html { #使用location定义用户请求的uri
}
error_page 500 502 503 504 /50x.html; #500、502、503、504返回的页面
location = /50x.html {
}
} #server区块结束
} #http区块结束
=========http模块配置(有{}标志)==================
[root@localhost ~]#systemctl disable firewalld --now
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive
[root@localhost ~]# systemctl restart nginx
#测试可以使用curl命令访问web服务器或者使用浏览器访问
[root@localhost ~]# curl -I localhost
HTTP/1.1 200 OK
Server: nginx/1.21.5
Date: Fri, 17 Nov 2023 08:40:28 GMT
Content-Type: text/html
Content-Length: 3510
Last-Modified: Mon, 23 Oct 2023 15:48:29 GMT
Connection: keep-alive
ETag: "653695cd-db6"
Accept-Ranges: bytes

四、虚拟主机配置实战

1.搭建静态网站——基于http协议的静态网站

[root@service ~]# echo "hello world" > /usr/share/nginx/html/index.html 
[root@service ~]# curl service
hello world
[root@service ~]# curl 192.168.36.136
hello world

2.建立两个基于ip地址访问的网站

要求如下:

        该网站ip 地址的主机位为 100 ,设置首页目录为 /www/ip/100 ,网页内容为: this is 100
        该网站ip 地址主机位为 200 ,设置首页目录为 /www/ip/200 ,网页内容为: this is 200

 

 1.添加网卡ens33并添加IP地址(192.168.36.100 、192.168.36.200)
nmtui

 

 

 

 最好重启一下虚拟机!

#激活网卡ens33
[root@service ~]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/2)
  2.创建两个网页文件根目录,并定义网页内容
[root@service ~]# mkdir -pv /www/ip/{100,200}
[root@service ~]# echo this is 100 > /www/ip/100/index.html 
[root@service ~]# echo this is 200 > /www/ip/200/index.html 
 3.设置selinux,必须设置,否则无法看到网页页面内容
[root@service ~]# setenforce 0
[root@service ~]# getenforce 
Permissive
4.定义基于不同ip地址来访问网站的配置文件
[root@service ~]# vim /etc/nginx/conf.d/test_ip.conf 
[root@service ~]# cat /etc/nginx/conf.d/test_ip.conf 
server {
	listen 192.168.36.100:80;
	root /www/ip/100;
	location / {
	}
}

server {
        listen 192.168.36.200:80;
        root /www/ip/200;
        location / {
        }
}
5.重启nginx服务并验证效果
[root@service ~]# systemctl restart nginx.service 
[root@service ~]# curl 192.168.36.100
this is 100
[root@service ~]# curl 192.168.36.200
this is 200

 两个基于ip地址访问的网站建立成功!

3.建立两个基于不同端口访问的网站

要求如下:

        建立一个使用web 服务器默认端口的网站,设置网站首页目录为/www/port/80,网页内容为the port is 80。
        建立一个使用10000 端口的网站,设置网站首页目录为 /www/port/10000 ,网页内容为: the port is 10000。
[root@service ~]# mkdir -pv /www/port/{80,10000}
mkdir: 已创建目录 '/www/port'
mkdir: 已创建目录 '/www/port/80'
mkdir: 已创建目录 '/www/port/10000'
[root@service ~]# echo the port is 80 > /www/port/80/index.html
[root@service ~]# echo the port is 10000 > /www/port/10000/index.html
[root@service ~]# nmcli connection modify ens33 +ipv4.addresses 192.168.36.153/24
[root@service ~]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
[root@service ~]# vim /etc/nginx/conf.d/test_port.conf 
[root@service ~]# cat /etc/nginx/conf.d/test_port.conf 
server {
	listen 192.168.36.153:80;
	root /www/port/80;
	location / {
	}
}

server {
        listen 192.168.36.153:10000;
        root /www/port/10000;
        location / {
        }
}

[root@service ~]# systemctl restart nginx.service 
[root@service ~]# curl 192.168.36.153
the port is 80
[root@service ~]# curl 192.168.36.153:10000
the port is 10000

4.建立两个基于域名访问的网站

要求如下:

新建一个网站,域名为 www.ceshi.com ,设置网站首页目录为 /www/name ,网页内容为 this is
test
新建一个网站,域名为 rhce.first.day ,同时可通过 ce.first.day 访问,设置网站首页目录
/www/ce, 网页内容为: today is first day of class
基于域名的网站,需要用到域名解析。 域名 ------->ip 地址
浏览器如何通过域名去查询 URL 对应的 IP (对应服务器地址):
1 、浏览器缓存:浏览器会按照一定的频率缓存 DNS 记录。
2 、操作系统缓存:如果浏览器缓存中找不到需要的 DNS 记录,那就去操作系统中的 hosts 文件
找。 hosts 是一个没有扩展名的系统文件,其作用就是将一些常用的网址域名与其对应的 IP 地址建
立一个关联 " 数据库 " ,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从 Hosts
件中寻找对应的 IP 地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址
提交 DNS 域名解析服务器进行 IP 地址的解析。
windows 下的 hosts 文件路径: C:\Windows\System32\drivers\etc\hosts
Linux 下的 hosts 文件路径 :/etc/hosts
3 、路由缓存:路由器也有 DNS 缓存。
4 ISP DNS 服务器: ISP 是互联网服务提供商 (Internet Service Provider) 的简称, ISP 有专门的
DNS 服务器应对 DNS 查询请求。
5 、根服务器: ISP DNS 服务器还找不到的话,它就会向根服务器发出请求,进行递归查询
DNS 服务器先问根域名服务器 .com 域名服务器的 IP 地址,然后再问 .com 域名服务器,依次类
推)
[root@service ~]# nmcli connection modify ens33 +ipv4.addresses 192.168.36.154/24
[root@service ~]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
[root@service ~]# mkdir /www/{name,ce}
[root@service ~]# echo this is test > /www/name/index.html
[root@service ~]# echo today is first day of class > /www/ce/index.html
[root@service ~]# vim /etc/nginx/conf.d/test_servername.conf
[root@service ~]# cat /etc/nginx/conf.d/test_servername.conf 
server {
	listen 192.168.36.154:80;
	server_name www.ceshi.com;
	root /www/name;
	location / {
	}
}
server {
	listen 192.168.36.154:80;
	server_name rhce.first.day ce.first.day;
	root /www/ce;
	location / {
	}
}

[root@service ~]# vim /etc/hosts
[root@service ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.36.154 www.ceshi.com rhce.first.day ce.first.day
[root@service ~]# systemctl restart nginx.service 
[root@service ~]# curl www.ceshi.com
this is test
[root@service ~]# curl rhce.first.day
today is first day of class
[root@service ~]# curl ce.first.day
today is first day of class
两个基于域名访问的网站建立成功!

5.基于虚拟目录和用户控制的web网站

1.虚拟目录实现
[root@service ~]# nmcli connection modify ens33 +ipv4.addresses 192.168.36.155/24
[root@service ~]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/5)
[root@service ~]# vim /etc/nginx/conf.d/test_virtualdir.conf
[root@service ~]# cat /etc/nginx/conf.d/test_virtualdir.conf 
server {
	listen 192.168.36.155:80;
	root /usr/share/nginx/html;
	location /real {
	alias /www/real;
	}
}
[root@service ~]# mkdir /www/real/
[root@service ~]# echo real-virtual > /www/real/index.html
[root@service ~]# systemctl restart nginx.service 
[root@service ~]# curl 192.168.36.155/real/
real-virtual
2.用户访问控制
[root@client ~]# vim /etc/nginx/conf.d/test_virtualdir.conf
[root@client ~]# cat /etc/nginx/conf.d/test_virtualdir.conf 
server {
	listen 192.168.36.155:80;
	root /usr/share/nginx/html;
	location /real {
		alias /www/real;
		auth_basic on;
		auth_basic_user_file /etc/nginx/conf.d/auth-password;
	}
}
[root@client ~]# dnf install httpd-tools -y
[root@client ~]# htpasswd -cb /etc/nginx/conf.d/auth-password user1 123456
Adding password for user user1
[root@client ~]# systemctl restart nginx.service 
[root@client ~]# curl 192.168.36.155/real/
real-virtual
[root@client ~]# curl 192.168.36.155/real/ -u user1
Enter host password for user 'user1':
real-virtual
[root@client ~]# curl user1:123456@192.168.36.155/real/
real-virtual

6.搭建静态网站——基于https协议的静态网站

1https简介
超文本传输协议 HTTP 协议被用于在 Web 浏览器和网站服务器之间传递信息。 HTTP 协议以明文方式发送
内容,不提供任何方式的数据加密,如果攻击者截取了 Web 浏览器和网站服务器之间的传输报文,就可
以直接读懂其中的信息,因此 HTTP 协议不适合传输一些敏感信息,比如信用卡号、密码等。为了解决
HTTP 协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议 HTTPS
HTTPS (全称: Hyper Text Transfer Protocol over Secure Socket Layer Hypertext Transfer
Protocol Secure ,超文本传输安全协议),是以安全为目标的 HTTP 通道。 HTTPS并不是一个新协议, 而是 HTTP+SSL TLS )。原本 HTTP 先和 TCP (假定传输层是 TCP 协议)直接通信,而加了 SSL 后,就变 HTTP 先和 SSL 通信,再由 SSL TCP 通信,相当于 SSL 被嵌在了 HTTP TCP 之间。

SSL “Secure Sockets Layer” 的缩写,中文叫做 安全套接层 。它是在上世纪 90 年代中期,由网景公司
设计的。到了 1999 年, SSL 应用广泛,已经成为互联网上的事实标准。 IETF 就把 SSL 标准化。标准化之
SSL 被改为 TLS Transport Layer Security 传输层安全协议)。
SSL 协议分为两层:
        SSL记录协议 ( SSL Record Protocol ):它建立在可靠的传输协议(如 TCP )之上,为高层协议提 供数据封装、压缩、加密等基本功能。
        SSL握手协议( SSL Handshake Protocol ):它建立在 SSL 记录协议之上,用于在实际的数据传输
开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
SSL 协议提供的服务:
1 )认证用户和服务器,确保数据发送到正确的客户机和服务器
2 )加密数据以防止数据中途被窃取
3 )维护数据的完整性,确保数据在传输过程中不被改变

2https协议加密所使用的算法
HASH 是把任意长度的输入(又叫做预映射 pre-image )通过散列算法变换成固定长度的输出,该输出就 是散列值。Hash 算法特别的地方在于它是一种单向算法,用户可以通过 hash 算法对目标信息生成一段 特定长度的唯一hash 值,却不能通过这个 hash 值重新获得目标信息。因此 Hash 算法常用在不可还原的 密码存储、信息完整性校验等。
常见的 HASH 算法: MD2 MD4 MD5 HAVAL SHA SHA-1 HMAC HMAC-MD5
HMACSHA1
共享密钥加密(对称密钥加密):加密和解密使用相同密钥。
对称加密算法: DES 3DES DESX Blowfish IDEA RC4 RC5 RC6 AES
公开密钥加密(非对称密钥加密):公开密钥加密使用一对非对称的密钥。一把叫做私有密钥,一把叫 做公开密钥。私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得。使用 此加密方式,发送密文的一方使用公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私 有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听盗 走。
常见的非对称加密算法: RSA ECC (移动设备用)、 Diffie-Hellman El Gamal DSA (数字签名 用)。
但由于公开密钥比共享密钥要慢,所以我们就需要综合一下他们两者的优缺点,使他们共同使用,而这 也是HTTPS 采用的加密方式。在交换密钥阶段使用公开密钥加密方式,之后建立通信交换报文阶段则使 用共享密钥加密方式。
如何证明公开密钥本身是货真价实的公开密钥?如,正准备和某台服务器建立公开密钥加密方式下的通 信时,如何证明收到的公开密钥就是原本预想的那台服务器发行的公开密钥。或许在公开密钥传输过程 中,真正的公开密钥已经被攻击者替换掉了。这个时候就需要第三方公证单位来帮忙啦。CA就是一个公认的公证单位,你可以自行产生一把密钥且制作出必要的证书数据并向 CA 单位注册,那么 当客户端的浏览器在浏览时,该浏览器会主动向CA 单位确认该证书是否为合法注册过,如果是,那么该 次连接才会建立,如果不是,浏览器会发出警告信息,告知用户应避免建立连接。所以说,如此一来 WWW服务器不但有公证单位的证书,用户在建立连接时也比较有保障。
3)浏览器访问https网站的通信过程
客户端浏览器向服务器端发送如下信息
        
客户端支持的 SSL /TLS 协议的版本号。
Cipher Suite (密钥算法套件)。
客户端产生的随机数,稍后用于生成 " 对话密钥 "
服务器端向客户端发送如下信息
确认使用的加密通信协议版本,如果浏览器与服务器支持的版本不一致,服务器关闭加密通
信。
确认使用的加密方法。
服务器证书。
要使数字证书有用,它的结构必须采用一种可理解且可靠的形式,以便人们可以轻松地检索并
理解证书内的信息。例如,护照采用这样一种结构:人们可以轻松地理解以前从未见过的那一
类护照中的信息。同样,只要数字证书是标准化的,则无论颁发该证书的是哪个机构,人们都
可以阅读并理解该证书。
S/MIME 标准规定:用于 S/MIME 的数字证书应遵守国际电信同盟 (ITU) X.509 标准。 S/MIME
版本 3 明确要求数字证书应遵循 X.509 的第 3 版。由于 S/MIME 依赖于已建立的数字证书结
构公认标准,因此 S/MIME 标准建立在该标准的发展之上,从而提高了它的认可度。
X.509 标准规定数字证书应包含标准化信息。具体地说, X.509 版本 3 证书包含下列字段:
                
                
        版本号 证书所遵循的 X.509 标准的版本。
        序列号 唯一标识证书且由证书颁发机构颁发的编号。
        签名算法 CA 用于对证书进行数字签名的 hash 算法。
        颁发者名称 实际颁发该证书的证书颁发机构的标识。
        有效期 数字证书保持有效的时间段,并包含起始日期和过期日期。
        使用者名称 数字证书所有者的姓名。
        使用者公钥信息 与数字证书所有者关联的公钥以及与该公钥关联的特定公钥算法。
        颁发者唯一标识符 可以用来唯一标识数字证书颁发者的信息。
        使用者唯一标识符 可以用来唯一标识数字证书所有者的信息。
        扩充信息 与证书的使用和处理有关的其他信息。
        证书颁发机构的数字签名 使用指纹算法中指定的 HASH 算法以及证书颁发机构的私钥进
        行加密的数字签名。
服务器生成的随机数,稍后用于生成 " 对话密钥 "
客户端利用服务器传过来的信息验证服务器的合法性。如果合法性验证没有通过,通讯将断开;如
果合法性验证通过,则可以知道认证服务器的公开密钥的是真实有效的数字证书认证机构,并且服
务器的公开密钥是值得信赖的。(此处认证机关的公开密钥必须安全地转交给客户端。使用通信方
式时,如何安全转交是一件很困难的事,因此,多数浏览器开发商发布版本时,会事先在内部植入
常用认证机关的公开密钥。)
客户端随机产生一个用于后面通讯的对称密钥,然后用服务器的公钥对其加密,然后将加密后的对
称密钥传给服务器。
HTTPS 的安全通信工作流程可大致分为三个阶段:
        
认证服务器 :浏览器内置一个受信任的 CA 机构列表,并保存了这些 CA 机构的证书。第一阶段服务器会提 供经CA 机构认证颁发的服务器证书,如果认证该服务器证书的 CA 机构,存在于浏览器的受信任 CA 机构 列表中,并且服务器证书中的信息与当前正在访问的网站(域名等)一致,那么浏览器就认为服务端是 可信的,并从服务器证书中取得服务器公钥,用于后续流程。否则,浏览器将提示用户,根据用户的选择,决定是否继续。当然,我们可以管理这个受信任CA 机构列表,添加我们想要信任的 CA 机构,或者移 除我们不信任的CA 机构。
协商会话密钥 :客户端在认证完服务器,获得服务器的公钥之后,利用该公钥与服务器进行加密通信, 协商出两个会话密钥,分别是用于加密客户端往服务端发送数据的客户端会话密钥,用于加密服务端往 客户端发送数据的服务端会话密钥。在已有服务器公钥,可以加密通讯的前提下,还要协商两个对称密 钥的原因,是因为非对称加密相对复杂度更高,在数据传输过程中,使用对称加密,可以节省计算资 源。另外,会话密钥是随机生成,每次协商都会有不一样的结果,所以安全性也比较高。
加密通讯 :此时客户端服务器双方都有了本次通讯的会话密钥,之后传输的所有 http 数据,都通过会话 密钥加密。这样网路上的其它用户,将很难窃取和篡改客户端和服务端之间传输的数据,从而保证了数 据的私密性和完整性。
4https网站配置
[root@service ~]# nmcli connection modify ens33 +ipv4.addresses 192.168.36.156/24
[root@service ~]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/6)
[root@service ~]# mkdir -pv /www/https/
mkdir: 已创建目录 '/www/https/'
[root@service ~]# echo https > /www/https/index.html
[root@service ~]# cd /etc/pki/tls/certs/
[root@service certs]# openssl genrsa -out https.key
[root@service certs]# openssl req -utf8 -new -key https.key -x509 -days 100 -out https.crt
[root@service certs]# openssl req -utf8 -new -key https.key -x509 -days 100 -out https.crt
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) [XX]:cs
State or Province Name (full name) []:cs
Locality Name (eg, city) [Default City]:cs
Organization Name (eg, company) [Default Company Ltd]:cs
Organizational Unit Name (eg, section) []:cs
Common Name (eg, your name or your server's hostname) []:cs
Email Address []:123@cs.com
[root@service certs]# vim /etc/nginx/conf.d/test_https.conf
[root@service certs]# cat /etc/nginx/conf.d/test_https.conf 
server {
	# listen 80;
	listen 	192.168.36.156:443 ssl;
	root /www/https;
	ssl_certificate /etc/pki/tls/certs/https.crt;
	ssl_certificate_key /etc/pki/tls/certs/https.key;
	location / {
	}
}
[root@service certs]# systemctl restart nginx.service
[root@service certs]# curl --insecure https://192.168.36.156
https
[root@service certs]# curl -k https://192.168.36.156
https

7.搭建动态网站

动态网站并不是指具有动画功能的网站,而是指网站内容可根据不同情况动态变更的网站,一般情况下 动态网站通过数据库进行架构。 动态网站除了要设计网页外,还要通过数据库和编程序来使网站具有更 多自动的和高级的功能。
动态网页:使用网页脚本语言,比如 php JSP 等,通过脚本将网站内容动态存储到数据库,用户访问网 站是通过读取数据库来动态生成网页的方法。
[root@service ~]# nmcli connection modify ens33 +ipv4.addresses 192.168.36.157/24
[root@service ~]# nmcli connection up ens33
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/7)
[root@service ~]# dnf install php php-fpm -y
[root@service ~]# systemctl restart nginx php-fpm
[root@service ~]# echo "?php phpinfo(); ?" > /usr/share/nginx/html/index.php
#使用浏览器访问

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

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

相关文章

算法——递推

目录 前言一、什么是递推二、递推算法的分类三、递推算法的特点四、递推算法的应用五、递推算法的设计步骤六、递推算法与递归算法的比较七、经典例题1.斐波那契数列代码题解 2.爬楼梯代码题解 [3.杨辉三角 II](https://leetcode.cn/problems/pascals-triangle-ii/submissions/…

C语言 | Leetcode C语言题解之第520题检测大写字母

题目&#xff1a; 题解&#xff1a; bool detectCapitalUse(char * word){int len strlen(word);int res 0;int index -1;if(len 1)return true;else{for(int i 0; i < len; i){if(isupper(word[i])){res;index i;}}}return res len || res 0 || (res 1 &&…

了解密钥推导函数KDF-HMAC-SHA-256

引言 在现代密码学中&#xff0c;密钥推导函数&#xff08;KDF&#xff0c;Key Derivation Functions&#xff09;扮演着至关重要的角色。它们允许从主密钥或密码生成一个或多个固定长度的密钥&#xff0c;用于各种加密操作。KDF的设计目标是确保从同一主密钥生成的多个密钥在统…

【LeetCode:153. 寻找旋转排序数组中的最小值 + 二分】

在这里插入代码片 &#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕…

Serverless + AI 让应用开发更简单

本文整理自 2024 云栖大会&#xff0c;阿里云智能高级技术专家&#xff0c;史明伟演讲议题《Serverless AI 让应用开发更简单》 随着云计算和人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;企业对于高效、灵活且成本效益高的解决方案的需求日益增长。本文旨在…

解决python matplotlib画图无法显示中文的问题

在用matplotlib做一个简单的可视化统计时&#xff0c;由于标签是中文&#xff0c;无法显示&#xff0c;只是显示出来一些方框&#xff08;如图&#xff09; 问题在于&#xff0c;当前matplotlib使用的字体不支持中文&#xff0c;我们进行替换就可以了 我想替换为黑体&#xff…

数据库_SQLite3

下载 1、更新软件源&#xff1a; sudo apt-get update 2、下载SQLite3&#xff1a; sudo apt-get install sqlite3 3、验证&#xff1a; sqlite3启动数据库&#xff0c;出现以下界面代表运行正常。输入 .exit 可以退出数据库 4、安装sqlite3的库 sudo apt-get install l…

砥砺十年风雨路,向新而行创新程丨怿星科技十周年庆典回顾

10月24日&#xff0c;是一年中的第256天&#xff0c;也是程序员节&#xff0c;同时也是怿星的生日。2014年到2024年&#xff0c;年华似水匆匆一瞥&#xff0c;多少岁月轻描淡写&#xff0c;怿星人欢聚一堂&#xff0c;共同为怿星科技的十周年庆生&#xff01; 01.回忆往昔&…

模拟电路week2

模拟电路学习 三.二极管 1.概念 本征半导体&#xff1a;纯净的半导体 本征半导体的晶体结构示意图&#xff1a; 载流子&#xff1a;在导体或半导体中能够移动并携带电荷的粒子 本征激发&#xff1a;在半导体中&#xff0c;当温度升高时&#xff0c;热能可以使价带中的电子跃…

10天进阶webpack---(1)为什么要有webpack

首先就是我们的代码是运行在浏览器上的&#xff0c;但是我们开发大多都是利用node进行开发的&#xff0c;在浏览器中并没有node提供的那些环境。这就早成了运行和开发上的不同步问题。 -----引言 浏览器模块化的问题&#xff1a; 效率问题&#xff1a;精细的模块划分带来了更…

【C++篇】跨越有限与无限的边界:STL之set容器中的自我秩序与无限可能

文章目录 C set 容器详解&#xff1a;秩序与高效的数据管理前言第一章&#xff1a;C set 的概念1.1 set 的定义1.2 set 的特点 第二章&#xff1a;set 的构造方法2.1 常见构造函数2.1.1 示例&#xff1a;不同构造方法 2.2 相关文档 第三章&#xff1a;set 的常用操作3.1 插入操…

Java求最值 C语言二维数组与指针

1. public static void main(String[] args) {int []arr{11,22,33,44,55,66};int maxarr[0];//arr[0]为索引值 若一开始为0&#xff1b;数组全是负数就会错误for (int i 1; i < arr.length; i) {if (arr[i]>max){maxarr[i];}}System.out.println(max); }//循环开始条件…

微服务设计模式 - 断路器模式 (Circuit Breaker Pattern)

微服务设计模式 - 断路器模式 (Circuit Breaker Pattern) 定义 断路器模式&#xff08;Circuit Breaker Pattern&#xff09;是云计算和微服务架构中的一种保护性设计模式&#xff0c;其目的是避免系统中的调用链出现故障时&#xff0c;导致系统瘫痪。通过断路器模式&#xff…

PG数据库 jsonb字段 模糊查询

背景&#xff1a; 项目由于多语言的设计&#xff0c;将字段设置成json字段类型&#xff0c;同时存储中文和英文 页面上通过输入框实现模糊的查询 一、表结构&#xff1a;name字段设置jsonb类型 二、表数据 3、Mybatis编写sql select pp.name ->>zh-CN as pmsProductNam…

OpenCV—calcHist()函数

void calcHist( const Mat* images, int nimages,const int* channels, InputArray mask,SparseMat& hist, int dims,const int* histSize, const float** ranges,bool uniform true, bool accumulate false ); images 输入的数据指针&#xff0c;要具备相同的尺寸和数…

《Python网络安全项目实战》项目2 Python基础练习

《Python网络安全项目实战》项目2 Python基础练习 项目2 Python基础练习任务2.1 使用数据类型2.1.1 输出2.1.2 输入2.1.3 数字2.1.4 字符串 相关知识 任务评价 任务拓展 任务2.2 使用组合数据类型2.2.1 列表2.2.2 元组2.2.3 集合2.2.4 字典 相关知识 任务评价 任务…

less解决function中return写法在浏览器被识别成Object导致样式失败的问题

问题描述&#xff1a; 一开始写的是: baseFontSize: 37.5px;//基于屏幕尺寸/10得出的基准font-size// return失败,浏览器显示为[object Object],[object Object] .pxToRem(px){value: px / baseFontSize * 1rem;return value; } 使用height: .pxToRem(40px);之后浏览器却是这…

安装中文版 Matlab R2022a

下载安装包 压缩包有点大&#xff0c;大概20G 百度网盘&#xff1a;下载链接 提取码&#xff1a;rmja 安装 解压后打开目录&#xff0c;右键以管理员身份运行 setup.exe 选择输入安装秘钥 输入秘钥&#xff1a; 50874-33247-14209-37962-45495-25133-28159-33348-18070-6088…

Linux云计算 |【第五阶段】CLOUD-DAY9

主要内容&#xff1a; Metrics资源利用率监控、存储卷管理&#xff08;临时卷ConfitMap、EmptyDir、持久卷HostPath、NFS(PV/PVC)&#xff09; 一、Metrics介绍 metrics是一个监控系统资源使用的插件&#xff0c;可以监控Node节点上的CPU、内存的使用率&#xff0c;或Pod对资…

sql数据库数据修改与删除-DML

目录 修改数据 同时修改两个数据 修改表中所有数据 删除数据 删除指定字段的值&#xff08;用UPDATE&#xff09; 删除整张表的数据 举例表如下FIRST表 修改数据 UPDATE 表名 SET 字段名1值1,字段名2值2,...[WHERE 条件]; 将first表name字段张三修改为张三丰。 UPDA…