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地址