前一段時間新疆等地用戶訪問國務院官網,在首頁上發現大量淫穢信息及廣告,后反映給相關工作人員。經排查,并非是網站被劫持和入侵,而是運營商流量劫持導致的這個結果……此處且不論該時間后續事宜,作為一名優秀的運維工程師,我們面對運營商如此流氓的行為,應該怎么辦? 當然是全站HTTPS了,目前,百度、阿里、騰訊等國內互聯網巨頭已經采用全站HTTPS。下面我將帶你模擬搭建HTTPS。
這是一個常見的haproxy架構型,我們現在采用此架構,將HTTPS部署在haproxy上。
第一步:創建CA證書
1.CA機自簽名:
#創建數據庫 [root@centos]cd /etc/pki/CA touch index.txt [root@centos]echo 10 > serial #生成私鑰 [root@centos](umask 066;openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096) #自簽證書 [root@centos]cd /etc/pki/CA [root@centos]openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 7300

2.客戶端申請CA
生產私鑰 [root@centos](umask 066;openssl genrsa -out /etc/pki/tls/private/test.key 1024) 生成申請文件 [root@centos]openssl req -new -key /etc/pki/tls/private/app.key -day 365 -out /etc/pki/tls/test.csr
填寫CA信息(一定要和CA機中填寫的一致)

在CA機上批準頒發證書
[root@centos]openssl ca -in /tmp/test.csr -out /etc/pki/CA/certs/test.crt -days 100
再拷回客戶端就可以了。
第二步:配置Nginx服務器
#nginx1[root@centos] cd /app[root@centos]wget http://nginx.org/packages/centos/5/x86_64/RPMS/nginx-1.10.3-1.el5.ngx.x86_64.rpm[root@centos] yum localinstall nginx-xxxxxx[root@centos] service nginx start[root@centos] echo "Test Page" > /usr/share/nginx/html/index.html#nginx2[root@centos] cd /app[root@centos]wget http://nginx.org/packages/centos/5/x86_64/RPMS/nginx-1.10.3-1.el5.ngx.x86_64.rpm[root@centos] yum localinstall nginx-xxxxxx[root@centos] service nginx start[root@centos] echo "Test Page" > /usr/share/nginx/html/index.html
第三步:修改haproxy配置
首先生成一個pem文件供haproxy使用
[root@centos] cat /app/test.crt > test.pem[root@centos] cat /app/test.key >> test.pem
在修改hapeoxy配置
[root@centos] vim /etc/haproxy/haproxy.cfgglobal log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon stats socket /var/lib/haproxy/statsdefaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000frontend nginx *:80 bind *:443 ssl crt /app/https.pem bind *:80 redirect scheme https if !{ ssl_fc } #將所有http協議轉為https協議 default_backend web #acl invalid_src src 192.168.37.130 #http-request allow if invalid_src backend web balance roundrobin server web1 192.168.37.135:80 check server web2 192.168.37.134:80 checklisten stats bind :9099 stats enable stats uri /stats stats realm HAPorxy\ Stats\ Page stats auth admin:admin stats admin if TRUE stats hide-version
第四步:測試
測試訪問http://192.168.37.133
會看到自動跳轉到https了,此處會出現未認證證書的報錯,忽略即可。
就算把CA證書導入瀏覽器,因為我們得CA是自己搭建的,是未被互聯網信任的,所有仍會在地址前打×,所以,還是去購買一個認證吧。
原創文章,作者:cnc,如若轉載,請注明出處:http://www.www58058.com/76212