1. 程式人生 > >一次完整的http的請求過程與https的實現

一次完整的http的請求過程與https的實現

http

一次完整的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的實現