一次完整的http的请求过程与https的实现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一次完整的http的请求过程与https的实现相关的知识,希望对你有一定的参考价值。

一次完整的http请求过程


(1)发起请求建立连接;  三次握手 接收请求或拒绝请求


(2)接受请求


来自网络的请求报文中对某资源的一次请求过程;

并发访问响应模型(Web I/O);

        单进程I/O结构:启动一个进程处理用户请求,而且一次只处理一个;多个请求被串行响应

        多进程I/:并行启动多个进程,每个进程响应一个请求

        复用I/O结构:一个进程响应n个请求:

            多线程模型:一个进程生成n个线程,每个线程响应一个请求;

事件驱动机制:event-driven

复用的多进程I/O结构:启动多个(m)进程,每个进程响应n个请求;


(3) 处理请求 ;对请求报文进行解析,并获取请求资源及请求方法等相关信息



元数据: 请求报文首部

<method> <URL> <VERSION>

Host:www.magedu.com 请求主机名称

Connection:


(4)访问资源 : 获取请求报文中请求的资源


web服务器,即存放了web资源的服务器,负责向请求者提供对方请求的静态资源,或动态运行后的资源;这些资源放置于本地文件系统某路径下,此路径通常称为文档根(DocRoot)

web服务器资源路径映射方式:

(a)docroot

(b)alias

(c)虚拟机docroot

(d)家目录docroot


(5)构建响应报文

资源MIME资源:

    显示分类

魔法分类

协商分类

URL重定向:

web服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径;


(6)发送响应报文


    (7)记录日志



技术分享最后,当事务结束时,Web服务器会在日志文件中添加一个条目,来描述已执行的事务


https实现


    安装ssl这个模块

    yum install mod_ssl
    cat /etc/pki/tls/openssl.cnf

        技术分享如果忘记格式内容可以查看上述配置文件文件



    生成自签发证书CA

    cd /etc/pki/CA/
    (umask 066;openssl genrsa -out private/cakey.pem 2048)
    openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650
    openssl x509 -in cacert.pem -noout -text查看自签名证书
    touch index.txt
    echo 00 > serial


目录树如下格式


    [[email protected] CA]#tree    
    .
    ├── cacert.pem
    ├── certs
    ├── crl
    ├── index.txt
    ├── newcerts
    ├── private
    │   └── cakey.pem
    └── serial

生成私钥,既然是提供给web服务器使用,最好将私钥放在服务器自己的配置文件里,也可以单独建一个文件夹专门管理

    cd /etc/httpd/conf.d/    
    mkdir ssl
    cd ssl/ 私钥请求和证书都放在这里

生成私钥,申请证书

                    (umask 066;openssl genrsa -out httpd.key 1024)                    
                    openssl req -new -key httpd.key -out httpd.csr

将证书申请传给CA

                    scp httpd.csr 192.168.77.7:/etc/pki/CA/

签发证书

                    openssl ca -in httpd.csr -out certs/httpd.crt -days 363

颁发证书

                    scp certs/httpd.crt 192.168.77.6:/etc/httpd/conf.d/ssl/

配web服务器,让web服务器用到这些证书

scp cacert.pem 192.168.77.6:/etc/httpd/conf.d/ssl/


                    [[email protected] ssl]#tree                    
                    .
                    ├── cacert.pem
                    ├── httpd.crt
                    ├── httpd.csr
                    └── httpd.key
在  /etc/httpd/conf.d/ssl.conf这个配置文件中将证书的路径,和key的路径指定好
            SSLCertificateFile /etc/httpd/conf.d/ssl/httpd.crt                    
            SSLCertificateKeyFile /etc/httpd/conf.d/ssl/httpd.key
            SSLCACertificateFile /etc/httpd/conf.d/ssl/cacert.pem

将根证书导入到受信任的颁发机构


修改host文件C:\Windows\System32\drivers\etc\host

192.168.77.6 www.a.com


本文出自 “13147090” 博客,谢绝转载!

以上是关于一次完整的http的请求过程与https的实现的主要内容,如果未能解决你的问题,请参考以下文章

前端——理解一次完整HTTP请求的步骤

一次完整的 HTTP 请求过程

一次完整的 HTTP 请求过程

一次完整的http请求过程

一次完整的http请求过程

一次完整的http请求过程