Web服務之五:基於openssl定義https服務器的配置


https會話建立的過程

   http與https都是基於TCP協議的,所以得先三次握手,確保對方的主機在線。三次握手成功之后,客戶端和服務器端就可以建立SSL會話了。而建立SSL會話首先應該協商單向加密算法、對稱算法、公鑰加密算法,並選擇雙方都支持的算法,選擇完成之后,Server發送自己的證書給客戶端。客戶端對證書驗證完成之后如果發現沒有問題,客戶端會生成一個對稱密鑰(可能是隨機的)並將其使用Server的公鑰加密發送給服務器端,而Server將Client發送的對稱密鑰使用自己的私鑰解密,接下來就可以使用對稱密鑰加密Client請求的內容並傳送給客戶端了,所以SSL會話就建立了。

  在三次握手建立完成之后進行協商SSL,這個SSL的建立與主機名無關,因為兩台主機之間的通信靠的是IP和端口,因此兩台主機通信沒辦法基於主機名作區分。這就意味着,若服務器只有一個IP地址,即若當前主機實現了基於域名的虛擬主機,那么它只能為一個虛擬主機提供SSL功能,即SSL會話僅能基於IP地址進行

 

https的實現

  • 安裝SSL模塊

  要想讓Web服務器能夠支持SSL的功能,第一步得安裝SSL模塊

  查看模塊:

  可發現沒有SSL模塊,因此需要安裝:

  生成的/etc/httpd/conf.d/ssl.conf會作為主配置文件的一部分,因此需要重啟才能生效。

  一般來講,SSL新增了端口,而只要涉及到新端口(套接字)的話,必須得重啟或重新裝載才能生效。

  /var/cache/mod_ssl:SSL會話的緩存數據

 

  • 提供CA

  首先CA自簽證書,然后服務器生成一段密鑰,把公鑰發送給CA服務器,讓CA實現簽名。

  生成自簽證書:

    生成私鑰:

    修改默認配置:

 

      certs:生成的證書放置的目錄;
      crl:證書吊銷列表放置的目錄

      new_certs_dir:新簽的證書;

      index.txt:記錄簽署的證書及證書名稱等索引信息;

      serial:序列號;

      之所以在/etc/pki/CA目錄下,是因為生成的證書默認在此目錄下,為了不修改目錄,而且名稱就叫cacert.pem,因此使用此目錄。

      cacert.pem

      cakey.pem:私鑰,在private目錄下;

 

    生成自簽證書

    創建文件:

  • Web Server服務器端,生成一對密鑰,將公鑰保證成證書簽署請求發送給CA服務器

    注意:信息需要與CA保持一致,但hostname為需要使用證書的那一個虛擬主機的主機名。

  • CA服務器簽署證書

  • 將Web Server服務器的證書復制至Web服務器

 

    刪除CA服務器的server服務器的證書頒發請求,避免被竊取:

  • 配置Web服務器使用此證書

  備份配置文件:

  配置文件內容:

    <VirtualHost _default_:443>:監聽在443端口的虛擬主機;若有多個IP地址,這個虛擬主機應該監聽在某一特定地址上;

  修改如下:

    DocumentRoot:需要與對應的虛擬主機的DocumentRoot保持一致;

    SSLEngine:是否啟用SSL功能,需要為on;

    SSLProtocol:支持的SSL協議,all -SSLv2表示不使用SSLv2,那就只有SSLv3或TLSv1了。    

    SSLCipherSuite:加密機制,加密套件,ALL所有的但不包括ADH,不使用SSLv2

    SSLCertificateFile:證書文件的位置;

    SSLCertificateKeyFile:私鑰文件的位置;

  • Windows客戶端測試

    出現上述提示是因為對於頒發這個證書的機構,我們客戶端未表示信任

  因此需要將證書發送給Windows客戶端(使用ftp傳輸工具即可),並命名為*.crt,雙擊安裝即可。

    在瀏覽器中查看證書:

 

 

  需要再次強調的是,請求的URL名稱(即主機名稱)一定要與證書服務器的名稱保持一致。此外,一個地址上只能建立一個虛擬主機。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM