1.web服务器简介
(1)什么是www
www是world wide web的缩写,也就是环球信息广播的意思。通常说的上网就是利用www来查询用户所必要的信息。www可以团结笔墨、图形、影像以及声音等多媒体,并通过可以让鼠标单击超链接的方式将信息以Internet通报到天下各处去。
与其他服务器雷同,当你毗连上www网站,该网站肯定会提供一些数据,而你的客户端则必须要利用可以剖析这些数据的软件来处置惩罚,那就是欣赏器。www服务器与客户端欣赏器之间的毗连图。在这里插入图片形貌
1、 www所用的协议: 欣赏器怎样向web服务器哀求数据以及服务器怎样把文档传送给欣赏器呢?这就是
由http协议来界说的,(Hyper Text Transport Protocol,HTTP,超文本传输协议)。
2、www服务器必要提供可让客户端欣赏的平台。如今最主流的Web服务器是Apache、Microsoft的
Internet信息服务器(Internet Information Services,IIS)和unix nginx。
3、服务器所提供的最紧张数据是超文本标记语言(Hyper Text Markup Language,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范例:
(3)http协议哀求的工作流程
(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欣赏器表现访问的网站内容到屏幕上。
2.web服务器的范例
(1)仅提供用户欣赏的单向静态网页
单纯是由服务器单向提供数据给客户端,Server不必要与client端有互动,以是你可以到该网站上去欣赏,但是无法举行数据的上传。
(2)提供用户互动接口的动态网站
这种范例的网站可以让服务器与用户互动,常见的比方留言板,博客。这种范例的网站必要通过“网页步调语言”来实现与用户互动的举动。常见的比方:PHP网页步调语言,共同数据库体系来举行数据的读、写。当你在向服务器哀求数据时,着实是通过服务器端同一个网页步调在负责将数据读出或写入数据库,变更的是数据库的内容,网页步调并没有任何改变。
别的一种交互式的动态网页紧张是在客户端实现。服务端将可实验的步调代码(JavaScript)传送给客户端,客户端的欣赏器如果提供JavaScript的功能,那么该步调就可以在客户端的盘算机上面工作了;别的一种可在客户端实验的就是flash动画格式,在这种动画格式内还可以举行步调操持。搭建动态网站的需求:
LAMP(linux+Apache+MySQL+PHP)
lnmp(linux+nginx+Mysql+php)
Apache紧张提供www的服务器平台
MySQL:传统的文件读取是很贫困的,如果你只要读取该文件当中的一小部门,体系照旧会将整
个文件读出来,若又有人同时读取同一个文件时,那就会造成服从与体系上的题目,以是才会有数
据库体系的推出。数据库着实是一种特别格式的文件,这种文件要通过特别接口(数据库软件)来
举行读写。由于这个特别接口已经针对数据的查询、写入做过优化操持,因此很得当多人同时写入
与查询工作。
PHP:PHP可以被用来创建动态网页,PHP步调代码可以直接在HTML网页当中嵌入,就像编辑
HTML网页一样简朴。PHP是一种“步调语言”,这种步调语言可以直接在网页当中编写,不必要经
过编译即可实验。
3.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数量
- 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
复制代码 4.捏造主机设置实战
4.1 搭建静态网站——基于http协议的静态网站
实验1:搭建一个web服务器,访问该服务器时表现“hello world”欢迎界面 。- [root@localhost ~]# echo "hello world" > /usr/share/nginx/html/index.html
- [root@localhost ~]# curl localhost
- hello world
- [root@localhost ~]# curl 192.168.221.130
- hello world
复制代码 实验2:创建两个基于ip所在访问的网站,要求如下
- 该网站ip所在的主机位为100,设置首页目次为/www/ip/100,网页内容为:this is 100。
- 该网站ip所在主机位为200,设置首页目次为/www/ip/200,网页内容为:this is 200。
- #添加ip地址
- [root@localhost ~]# nmcli connection modify ens160 +ipv4.addresses
- 192.168.221.100/24 +ipv4.gateway 192.168.168.2 ipv4.dns 114.114.114.114 ipv4.method manual autoconnect yes
- [root@localhost ~]# nmcli connection modify ens160 +ipv4.addresses 192.168.221.200/24
- [root@localhost ~]# nmcli connection up ens160
- #创建两个网页文件根目录,并定义网页内容
- [root@localhost ~]# mkdir -pv /www/ip/{100,200}
- [root@localhost ~]# echo this is 100 > /www/ip/100/index.html
- [root@localhost ~]# echo this is 200 > /www/ip/200/index.html
- #设置selinux,必须设置,否则无法看到网页页面内容
- [root@server html]# setenforce 0
- [root@server html]# getenforce
- Permissive
- #定义基于不同ip地址来访问网站的配置文件
- #新建文件,写入如下配置
- [root@localhost ~]# vim /etc/nginx/conf.d/test_ip.conf
- server {
- listen 192.168.221.100:80;
- root /www/ip/100;
- location / {
- }
- }
- server {
- listen 192.168.221.200:80;
- root /www/ip/200;
- location / {
- }
- }
- [root@localhost ~]# systemctl restart nginx
- [root@localhost ~]# curl 192.168.221.100
- this is 100
- [root@localhost ~]# curl 192.168.221.200
- this is 200
复制代码 实验3:创建两个基于差别端口访问的网站,要求如下:
- 创建一个利用web服务器默认端口的网站,设置网站首页目次为/www/port/80,网页内容为:the port is 80。
- 创建一个利用10000端口的网站,设置网站首页目次为/www/port/10000,网页内容为:the port is 10000。
- [root@localhost ~]# mkdir -pv /www/port/{80,10000}
- [root@localhost ~]# echo the port is 80 > /www/port/80/index.html
- [root@localhost ~]# echo the port is 10000 > /www/port/10000/index.html
- [root@localhost ~]# nmcli connection modify ens160 +ipv4.addresses
- 192.168.221.123/24
- [root@localhost ~]# nmcli connection up ens160
- [root@localhost ~]# cat /etc/nginx/conf.d/test_port.conf
- server {
- listen 192.168.221.123:80;
- root /www/port/80;
- location / {
- }
- }
- server {
- listen 192.168.221.123:10000;
- root /www/port/10000;
- location / {
- }
- }
- [root@localhost ~]# systemctl restart nginx
- [root@localhost ~]# curl 192.168.221.123:10000
- the port is 10000
- [root@localhost ~]# curl 192.168.221.123
- the port is 80
复制代码 实验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@localhost conf.d]# nmcli connection modify ens160 +ipv4.addresses 192.168.221.129/24
- [root@localhost conf.d]# nmcli connection up ens160
- [root@localhost ~]# mkdir /www/{name,ce}
- [root@localhost ~]# echo this is test > /www/name/index.html
- [root@localhost ~]# echo today is first day of class > /www/ce/index.html
- [root@localhost ~]# vim /etc/nginx/conf.d/test_servername.conf
- server {
- listen 192.168.221.129:80;
- server_name www.ceshi.com;
- root /www/name;
- location / {
- }
- }
- server {
- listen 192.168.221.129:80;
- server_name rhce.first.day ce.first.day;
- root /www/ce;
- location / {
- }
- }
- [root@localhost ~]# vim /etc/hosts
- 192.168.221.129 www.ceshi.com rhce.first.day ce.first.day
- [root@localhost ~]# systemctl restart nginx
- [root@localhost ~]# curl www.ceshi.com
- this is test
- [root@localhost ~]# curl rhce.first.day
- today is first day of class
- [root@localhost ~]# curl ce.first.day
- today is first day of class
复制代码 实验5:基于捏造目次和用户控制的web网站- #虚拟目录实现
- [root@localhost conf.d]# nmcli connection modify ens160 +ipv4.addresses 192.168.221.155/24
- [root@localhost conf.d]# nmcli connection up ens160
- [root@localhost ~]# vim /etc/nginx/conf.d/test_virtualdir.conf
- server {
- listen 192.168.221.155:80;
- root /usr/share/nginx/html;
- location /real {
- alias /www/real;
- }
- }
- [root@localhost ~]# mkdir /www/real/
- [root@localhost ~]# echo real-virtual > /www/real/index.html
- [root@localhost ~]# systemctl restart nginx
- [root@localhost ~]# curl 192.168.221.155/real/
- real-virtual
- #用户访问控制
- [root@localhost ~]# vim /etc/nginx/conf.d/test_virtualdir.conf
- server {
- listen 192.168.221.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@localhost ~]# dnf install httpd-tools -y
- [root@localhost ~]# htpasswd -cb /etc/nginx/conf.d/auth-password user1 123456
- [root@localhost ~]# systemctl restart nginx
- [root@localhost ~]# curl 192.168.221.155/real/
- <html>
- <head><title>401 Authorization Required</title></head>
- <body>
- <center><h1>401 Authorization Required</h1></center>
- <hr><center>nginx/1.21.5</center>
- </body>
- </html>
- [root@localhost ~]# curl 192.168.221.155/real/ -u user1
- Enter host password for user 'user1':
- real-virtual
- [root@localhost ~]# curl user1:[email protected]/real
- <html>
- <head><title>301 Moved Permanently</title></head>
- <body>
- <center><h1>301 Moved Permanently</h1></center>
- <hr><center>nginx/1.21.5</center>
- </body>
- </html>
- [root@localhost ~]# curl user1:[email protected]/real/
- real-virtual
复制代码 4.2 搭建静态网站——基于https协议的静态网站
(1)https简介
超文本传输协议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)维护数据的完备性,确保数据在传输过程中不被改变
(2)https协议加密所利用的算法
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数据,都通过会话密钥加密。如许网路上的别的用户,将很难盗取和篡改客户端和服务端之间传输的数据,从而包管了数据的私密性和完备性。
(4)https网站设置- #https功能由ngx_http_ssl_module模块提供
- [rootlocalhost ~]# nmcli connection modify ens160 +ipv4.addresses 192.168.221.156/24
- [root@localhost ~]# nmcli connection up ens160
- [root@localhost ~]# mkdir -pv /www/https/
- [root@localhost ~]# echo https > /www/https/index.html
- [root@localhost conf.d]# cd /etc/pki/tls/certs/
- #key是私钥文件
- [root@localhost certs]# openssl genrsa -out https.key
- #crt是由证书颁发机构(CA)签名后的证书,或者是开发者自签名的证书,包含证书持有人的信息,持有人的公钥,以及签署者的签名等信息
- [root@localhost certs]# openssl req -utf8 -new -key https.key -x509 -days
- 100 -out https.crt
- [[root@localhost ~]# cat /etc/nginx/conf.d/test_https.conf
- server {
- # listen 80;
- listen 192.168.221.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@localhost ~]# systemctl restart nginx
- [root@localhost ~]# curl --insecure https://192.168.221.156
- https
- [root@localhost ~]# curl -k https://192.168.221.156
- https
复制代码 4.3 搭建动态网站
动态网站并不是指具有动画功能的网站,而是指网站内容可根据不恻隐况动态变更的网站,一样平常情况下动态网站通过数据库举行架构。 动态网站除了要操持网页外,还要通过数据库和编步调来使网站具有更多自动的和高级的功能。
动态网页:利用网页脚本语言,比如php、JSP等,通过脚本将网站内容动态存储到数据库,用户访问网站是通过读取数据库来动态天生网页的方法。- [root@localhost nginx]# nmcli connection modify ens160 +ipv4.addresses 192.168.221.157/24
- [root@localhost nginx]# nmcli connection up ens160
- [root@localhost ~]# dnf install php php-fpm -y
- [root@localhost ~]# systemctl restart nginx php-fpm
- [root@ntp-server ~]# echo "<?php phpinfo(); ?>" >
- /usr/share/nginx/html/index.php
- #使用浏览器访问
复制代码 |