http協議:
默認使用80端口的應用層協議使用tcp協議進行傳輸。http協議主要是用來是實現萬維網站點資源的訪問。
ssl(安全套接層)協議:
??全稱為Secure Sockets Layer。在工作和傳輸層之間,對應用層協議的網絡連接進行加密保護。
https協議:
??http協議+ssl協議。默認使用tcp的443端口。
https協議的工作過程:
-
客戶端發起HTTPS請求
??用戶在瀏覽器里輸入一個https網址,然后連接到服務器的443端口 -
服務端的配置
??采用HTTPS協議的服務器必須要有一套數字證書,可以自己制作,也可以向組織申請。區別就是自己頒發的證書需要客戶端驗證通過,才可以繼續訪問,而使用受信任的公司申請的證書則不會彈出提示頁面。這套證書其實就是一對公鑰和私鑰 -
傳送服務器的證書給客戶端
??證書里其實就是公鑰,并且還包含了很多信息,如證書的頒發機構,過期時間等等 -
客戶端解析驗證服務器證書
??這部分工作是由客戶端的TLS來完成的,首先會驗證公鑰是否有效,比如:頒發機構,過期時間等等,如果發現異常,則會彈出一個警告框,提示證書存在問題。如果證書沒有問題,那么就生成一個隨機值。然后用證書中公鑰對該隨機值進行非對稱加密 -
客戶端將加密信息傳送服務器
??這部分傳送的是用證書加密后的隨機值,目的就是讓服務端得到這個隨機值,以后客戶端和服務端的通信就可以通過這個隨機值來進行加密解密了 -
服務端解密信息
??服務端將客戶端發送過來的加密信息用服務器私鑰解密后,得到了客戶端傳過來的隨機值 -
服務器加密信息并發送信息
??服務器將數據利用隨機值進行對稱加密,再發送給客戶端 -
客戶端接收并解密信息
??客戶端用之前生成的隨機值解密服務段傳過來的數據,于是獲取了解密后的內容
apache實現https的流程:
apache是一款以模塊化為特征的軟件,許多功能都依賴于不同的模塊來提供。加載對應的模塊就能實現對應的功能。
流程:
1.為apache服務器申請證書
2.配置apache的https功能
3.驗證https
apache申請證書的方式
1.搭建私有CA實現證書的頒發
2.使用CentOS7快速生成一個自簽名證書
[root@ansible?certs]#?pwd /etc/pki/tls/certs [root@ansible?certs]#?ls ca-bundle.crt??ca-bundle.trust.crt???make-dummy-cert??Makefile??renew-dummy-cert #取消makefile文件中對私鑰文件的加密 [root@ansible?certs]#?vim?Makefile %.key: ????????umask?77?;? ????????#/usr/bin/openssl?genrsa?-aes128?$(KEYLEN)?>?$@ ????????/usr/bin/openssl?genrsa??$(KEYLEN)?>?$@ #生成證書 [root@ansible?certs]#?make?Makefile?httpds.crt
3.通過阿里云等網站下載免費的證書(需要有域名)
配置apache的https功能
安裝mod_ssl軟件包,安裝mod_ssl軟件包后會自動生成apache的ssl配置文件和模塊。
[root@CentOS8?~]#?rpm?-ql?mod_ssl /etc/httpd/conf.d/ssl.conf??#ssl模塊的配置文件 /etc/httpd/conf.modules.d/00-ssl.conf?#加載ssl模塊 /usr/lib/.build-id /usr/lib/.build-id/e6/046e586d8d19fb92e3f8484a62203e841c3e2a /usr/lib/systemd/system/httpd-init.service /usr/lib/systemd/system/httpd.socket.d/10-listen443.conf /usr/lib64/httpd/modules/mod_ssl.so??#模塊文件 /usr/libexec/httpd-ssl-gencerts /usr/libexec/httpd-ssl-pass-dialog /usr/share/man/man8/httpd-init.service.8.gz /var/cache/httpd/ssl
修改配置文件:
[root@CentOS8?~]#?vim?/etc/httpd/conf.d/ssl.conf ??SSLCertificateFile?/data/apache/apache1.crt??#apache的證書文件 ??SSLCertificateKeyFile?/data/apache/apache1.key??#apache的私鑰文件 ??SSLCertificateChainFile?/etc/pki/tls/certs/server-chain.crt?#apache的證書鏈文件 ?? ??證書鏈文件:不指定證書鏈文件,它就不知道這個證書是誰頒發的。證書鏈就是上級CA的證書
驗證:
??設置windows的hosts文件用于驗證
windows的hosts文件位置:C:WindowsSystem32driversetc 格式:ip地址?名字