配置http服務支持https


首先簡單介紹一下SSL會話的過程:

SSL會話的簡化過程:
  (1) 客戶端發送可供選擇的加密方式,並向服務器請求證書
  (2) 服務器端發送證書及選定的加密方式給客戶端
  (3) 客戶端去得證書並進行證書驗證
    如果信任給其發證書的CA:
    (a) 驗證證書的來源合法性:用CA的公鑰解密證書上的數字簽名
    (b) 驗證證書的內容合法性,完整性驗證
    (c) 檢查證書的有效期限
    (d) 檢查證書是否被吊銷
    (e) 證書中擁有者的名字與訪問的目標主機要一致
  (4) 客戶端生成臨時會話密鑰(對稱密鑰),並使用服務器端的公鑰加密此數據發送給服務器,完成密鑰交換
  (5) 服務器用此密鑰加密用戶請求的資源,響應給客戶端

  需要注意的是SSL會話是基於IP地址創建的,所以單IP的主機上,僅可以使用一個https虛擬主機,不過實驗環境可隨意添加IP地址(ip addr add x.x.x.x/xx dev DEVICE)據說Linux下也有一個開源工具可以基於主機名創建多不個不同的https虛擬主機,不過配置起來沒有那么容易。

配置http支持https的大致步驟如下:
  (1) 為服務器申請數字證書
    測試:通過私建CA發證書
    (a) 創建私有CA
    (b) 在服務器上創建證書簽署請求
    (c) CA簽證
    (2) 配置httpd支持使用ssl,及使用證書
      ~]# yum install -y mod_ssl

    配置文件:/etc/httpd/conf.d/ssl.conf
      DocumentRoot
        ServerName
        SSLCertificateFile
        SSLCertificateKetFile
    (3) 測試基於https訪問相應的主機
      ~]# openssl s_clirnt [-connect host:port] [-cert filename] [-CApath directory] [-CAfile filename]

集體配置過程如下:

  基本環境:

    CA主機:

      CentOS 6.9/192.168.119.135

    提供http服務的主機:

      CentOS 7.2/192.168.119.132

      httpd-2.4.6(yum方式安裝的默認版本)

期間,兩個主機的防火牆都是關閉狀態,SELinux也是disabled

  首先創建一個CA,服務器端(提供http的主機)發起證書請求,由CA給其簽證,得到證書后服務器即可配置實現https

    在CA(CentOS 6.9/192.168.119.135)主機上創建CA

      ~]# cd /etc/pki/CA/

      CA]# (umask 077;openssl genrsa -out private/key.pem 2048)    #指明所創建的文件為當前目錄下的private目錄下名為key.pem,密鑰長度為2048

      CA]# touch index.txt   #創建一個index.txt的文件

      CA# echo 01 > serial   #指定之后生成證書的編號從01開始

  為自己創建自簽證書

      CA]# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 730   #假設CA的有效期為2年,接下來的內容根據實際情況填即可,完畢,可查看當前目錄下是否生成cacert.pem文件

      CA]# ll   #可看到已然生成cacert.pem,CA主機的CA創建完成,到提供http(CentOS 7.2/192.168.119.132)服務的主機生發起CA證書簽署請求

  切換到服務器(CentOS 7.2/192.168.119.132)上,發起CA證書簽署請求

    切換到/etc/httpd/目錄,並創建ssl目錄,#目錄可以隨意創建#並再切換到ssl目錄下

      ~]# cd /etc/httpd/

      httpd]# install -d ssl

      httpd]# cd ssl

      ssl]# (umask 077;openssl genrsa -out httpd.key 1024)   #生成密鑰,指明放在當前目錄下,密鑰長度為1024

      ssl]# openssl req -new -key httpd.key -out httpd.csr   #生證書簽署請求文件,在此處也可使用-days 來指明時間,但證書可以使用時間最終由CA所決定,指不指都作用不大

      需要注意的是,此時所填寫的信息需與之前CA服務器上的一致,Server's name 為http服務器的域名,否則瀏覽器整會提示不一致

    將csr文件發送到CA服務器

      ssl]# scp httpd.csr root@192.168.119.135:/tmp/   #以root身份上傳到CA服務器的/tmp目錄下

  此時切換到CA(CentOS 6.9/192.168.119.135)服務器上簽署證書即可

    CA]# openssl ca -in /tmp/httpd.csr -out certs/www.lushenle.com.crt -days 365   #證書有效期為一年

    查看newcerts目錄下是否生成了證書,若01.pem文件存在標明已經生成了證書,此時,將正說傳給http服務器即可

    CA]# scp certs/www.lushenle.com.crt root@192.168.119.132:/etc/httpd/ssl    # 

接下來接配置http服務器支持https服務

  需要確認服務器是否支持ssl模塊

    ~]# httpd -M | grep ssl   #若不支持,需安裝模塊

    ~]# yum install -y mod_ssl

  切換到/etc/httpd/conf.d/目錄下,編輯ssl.conf文件,當然在編輯之前建議先備份一分

    ~]# cd /etc/httpd/conf.d/

    conf.d]# cp ssl.conf{,.bak}

    conf.d]# vim ssl.conf

    DocumentRoot "/vhosts/lushenle/htdocs"
    ServerName www.lushenle.com:443

    <VirtualHost _default_:443> 改為:

    <VirtualHost *:443>   或者  <VirtualHost 192.168.119.132:443>

    SSLCertificateFile /etc/pki/tls/certs/localhost.crt 改為:

    SSLCertificateFile /etc/httpd/ssl/www.lushenle.com.crt

    SSLCertificateKeyFile /etc/pki/tls/private/localhost.key 改為:

    SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

  保存退出,開始測試

     


免責聲明!

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



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