首頁 >運維 >linux運維 >Linux apache怎麼實現https的配置

Linux apache怎麼實現https的配置

王林
王林轉載
2023-05-21 19:55:371725瀏覽

http協定:

預設使用80埠的應用層協定使用TCP協定進行傳輸。 http協定主要是用來是實現萬維網站點資源的存取。

ssl(安全通訊端層)協定:

  全稱為Secure Sockets Layer。在工作和傳輸層之間,對應用層協定的網路連線進行加密保護。

https協定:

  http協定 ssl協定。預設使用tcp的443埠。

Linux apache怎麼實現https的配置

https協定的工作流程:

Linux apache怎麼實現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:\Windows\System32\drivers\etc

格式:ip地址 名字

Linux apache怎麼實現https的配置

#

以上是Linux apache怎麼實現https的配置的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除