搭建HTTPS服務(wù)端

https和http的主要區(qū)別:
  一、https協(xié)議需要到ca機(jī)構(gòu)申請(qǐng)ssl證書(如沃通CA),另外沃通CA還提供3年期的免費(fèi)ssl證書
[http://freessl.wosign.com](http://freessl.wosign.com/),高級(jí)別的ssl證書需要一定費(fèi)用。
  二、http是超文本傳輸協(xié)議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協(xié)議。
  三、http和https使用的是完全不同的連接方式,用的端口也不一樣,http是80端口,https是443端口。
  四、http的連接很簡(jiǎn)單,是無(wú)狀態(tài)的;https協(xié)議是由ssl+http協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證
的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全。
【如何搭建https站點(diǎn)】
  說(shuō)到https站點(diǎn)的搭建,就不得不提到ssl協(xié)議。ssl是Netscape公司率先采用的網(wǎng)絡(luò)安全協(xié)議。它是在
傳輸通信協(xié)議(TCP/IP)上實(shí)現(xiàn)的一種安全協(xié)議,采用公開密鑰技術(shù)。ssl廣泛支持各種類型的網(wǎng)絡(luò),同時(shí)提供
三種基本的安全服務(wù),它們都使用公開密鑰技術(shù)。
  ssl的作用:
  1)認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器;
  2)加密數(shù)據(jù)以防止數(shù)據(jù)中途被竊取;
  3)維護(hù)數(shù)據(jù)的完整性,確保數(shù)據(jù)在傳輸過(guò)程中不被改變。
  而ssl證書指的是在ssl通信中驗(yàn)證通信雙方身份的數(shù)字文件,一般分為服務(wù)器證書和客戶端證書,我們通
常說(shuō)的ssl證書主要指服務(wù)器ssl證書。ssl證書由受信任的數(shù)字證書頒發(fā)機(jī)構(gòu)CA(如沃通WoSign),在驗(yàn)證服務(wù)
器身份后頒發(fā),具有服務(wù)器身份驗(yàn)證和數(shù)據(jù)傳輸加密功能。分為擴(kuò)展驗(yàn)證型EV ssl證書、組織驗(yàn)證型OV ssl證
書和域名驗(yàn)證型DV ssl證書。

實(shí)現(xiàn)https

環(huán)境
1.三臺(tái)主機(jī)分別為A,B,C。
2.A主機(jī)設(shè)置為CA和DNS服務(wù)器,ip為172.18.70.40
3.B主機(jī)為client,ip為172.18.70.70
4.C主機(jī)為httpd server,ip為172.18.70.80
5.已經(jīng)在三臺(tái)主機(jī)上啟動(dòng)了httpd服務(wù),并且可以正常訪問(wèn)自己的網(wǎng)頁(yè)。
1.在A主機(jī)上創(chuàng)建CA和DNS服務(wù)器
1)創(chuàng)建所需要的文件
    生成證書索引數(shù)據(jù)庫(kù)文件:
        touch /etc/pki/CA/index.txt  
            系統(tǒng)會(huì)自動(dòng)生成個(gè)index.txt.attr文件。用來(lái)決定是否使證書為唯一性,也就是是否可以重復(fù)申請(qǐng)證書。
    指定第一個(gè)頒發(fā)證書的序列號(hào):
        echo 01 > /etc/pki/CA/serial 
2)CA自簽證書
   生成私鑰:
        cd /etc/pki/CA/
        openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048
        chmod 600 cakey.pem
    生成自簽名證書:
        openssl req -new -x509 –key /etc/pki/CA/private/cakey.pem -days 7300 -out  /etc/pki/CA/cacert.pem
3)創(chuàng)建DNS服務(wù)器
    1》vim  /etc/named.conf
        options {
                   listen-on port 53 {  any ; };
        //   listen-on-v6 port 53 { ::1; };
            directory   "/var/named";
            dump-file   "/var/named/data/cache_dump.db";
                statistics-file "/var/named/data/named_stats.txt";
                memstatistics-file "/var/named/data/named_mem_stats.txt";
                   allow-query     { any ; };
            recursion yes;
            dnssec-enable no;
            dnssec-validation no;
            dnssec-lookaside no;
    2》關(guān)閉防火墻和設(shè)置selinux為permissive
        iptables -F
        setenforce 0
        
    3》創(chuàng)建解析
        1>vim /etc/named.rfc1912.zones
            zone "ab.com" IN {
                type master;
                file "ab.com.zone";
            };
        2>named-checkconf
        3>cd  /var/named/
        4>cp -a named.localhost ab.com.zone
        5>vim   ab.com.zone
            $TTL D
            @   IN SOA  dns  admin.ab.com. (
                                3   ; serial
                                D  ; refresh
                                H  ; retry
                                W  ; expire
                                H )    ; minimum
                NS  dns
            dns A   172.18.70.40
            websrv  A     172.18.70.40
            mail    A     172.18.70.40
            www   CNAME  websrv
        6>named-checkzone ab.com /var/named/ab.com.zone
        7>重新加載
            rndc reload
            service named reload or systemctl reload  named
            不行的話清除服務(wù)緩存,再來(lái)一遍
            rndc flush
            最有效的方式是重啟服務(wù)(正常工作中盡量別這么用,怕影響其他的同步)
            service named restart or systemctl restart named
        8>rndc status
2.在C主機(jī)
1)指向DNS服務(wù)器
    vim /etc/resolv.conf
        nameserver 172.18.70.80
    測(cè)試:
        dig -t A www.ab.com 
2)向CA申請(qǐng)證書
    1》生成證書請(qǐng)求
        生成私鑰:
            (umask 066; openssl genrsa -out /etc/pki/tls/private/http.key 2048)
        生成證書申請(qǐng)文件:
            openssl req -new -key /etc/pki/tls/private/http.key  -days 365 -out /etc/pki/tls/http.csr
    2》將證書請(qǐng)求文件傳輸給CA
        scp /etc/pki/tls/http.csr root@172.18.70.80:
3.在A主機(jī)
1)CA簽署證書:
    openssl ca -in /tmp/http.csr –out  /etc/pki/CA/certs/http.crt -days 365
     注意:
        默認(rèn)國(guó)家,省,公司名稱三項(xiàng)必須和CA一致,但可以修改/etc/pki/tls/openssl.cnf
        common name要使用此主機(jī)在通信真實(shí)使用的名字
2)CA證書和CA簽署的證書發(fā)送給C主機(jī),然后在C主機(jī)上進(jìn)行配置。
    scp /etc/pki/CA/certs/http.crt root@172.18.70.40:
    scp /etc/pki/CA/private/cakey.pem root@172.18.70.40:
4.在C主機(jī)
1)安裝mod_ssl模塊
    yum -y install mod_ssl
2)編輯ssl.conf配置文件
    vim /etc/httpd/conf.d/ssl.conf     配置文件路徑
        DocumentRoot "/var/www/html"
        SSLCertificateFile /etc/pki/tls/certs/httpd.crt     默認(rèn)證書路徑
        SSLCertificateKeyFile /etc/pki/tls/private/httpd.key   默認(rèn)私鑰路徑
        SSLCACertificateFile /etc/pki/CA/cacert.pem
    注:
        注意文件的路徑,你放在那里就寫成什么路徑。
3)重啟服務(wù),并進(jìn)行測(cè)試
    httpd -t  檢查語(yǔ)法
    service httpd  restart or systemctl restart httpd
    ss -tnl | grep 443    查看是否監(jiān)聽(tīng)在443端口
    curl  --cacert  /path to/cacert.pem   https://www.ab.com
5.在B主機(jī)
1》vim /etc/resolv.conf
    nameserver 172.18.70.40     (盡量就填寫一個(gè))
2》測(cè)試
    curl www.ab.com
3)CA證書導(dǎo)入
    1》A證書從A主機(jī)上拷貝過(guò)來(lái)
        scp root@172.18.70.70:/etc/pki/CA/cacert.pem /root/
    2》測(cè)試
        curl --cacert /root/cacert.pem https://www.ab.com
當(dāng)在B主機(jī)上測(cè)試成功時(shí),這個(gè)https就大致實(shí)現(xiàn)了。不過(guò)呢,一般都設(shè)置個(gè)強(qiáng)制跳轉(zhuǎn),也就是http直接跳到https上。
6.http重定向https(強(qiáng)制跳轉(zhuǎn))
在C主機(jī)上
    vim /etc/httpd/conf/httpd.conf
        Redirect  temp|permanent   /    https://www.ab.com
        注:
            temp為臨時(shí)跳轉(zhuǎn)代號(hào)302,permanent為永久跳轉(zhuǎn)代號(hào)301,二者二選一。
    service httpd restart or systemctl restart httpd
實(shí)際上,在實(shí)際運(yùn)行中不是用上面的方法來(lái)把http重定向?yàn)閔ttps的,而是采用HSTS。HSTS使http調(diào)整到https的
過(guò)程中沒(méi)有網(wǎng)絡(luò)過(guò)程,減少請(qǐng)求次數(shù),節(jié)約了網(wǎng)絡(luò)資源,所以應(yīng)用更為廣泛。
7.HSTS實(shí)現(xiàn)http重定向https
在C主機(jī)上
  vim /etc/httpd/conf/httpd.conf

        Header always set Strict-Transport-Security "max-age=15768000"
        RewriteEngine on
        RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=301]
    service httpd restart or systemctl restart httpd
8、用IE瀏覽器驗(yàn)證,因?yàn)檫@是自簽名證書,瀏覽器會(huì)報(bào)警說(shuō)不安全,點(diǎn)繼續(xù)流量就好了。
客戶機(jī)上輸入:https://服務(wù)器ip地址
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 實(shí)際環(huán)境 系統(tǒng)環(huán)境 macOS Sierra(10.12.5) Apache Apache/2.4.25 (Uni...
    boborz閱讀 19,012評(píng)論 1 23
  • httpd相關(guān): httpd程序版本: 。1.3 停止維護(hù) 。2.0 。 2.2 event為測(cè)試使用 。 2.4...
    ckhzw閱讀 418評(píng)論 0 0
  • 1.Linux下如何用命令查看實(shí)時(shí)日志(完整命令) tail -f 路徑.log查看前多少行 tai-200f 路...
    qianyewhy閱讀 2,324評(píng)論 0 11
  • 1. 概述 在網(wǎng)絡(luò)環(huán)境中一般用戶只需要在瀏覽器中輸入url如www.sunny.com就可以到對(duì)應(yīng)服務(wù)器獲取相應(yīng)的...
    ghbsunny閱讀 2,975評(píng)論 0 7
  • 別時(shí)未問(wèn)相見(jiàn)期,別后空候守蕃籬。 暮色黃昏云飛落,流光難書再見(jiàn)情。
    春雨微寒閱讀 151評(píng)論 0 0