系統(tǒng)改造Https方案


HTTPS

HTTPS便是HTTP Over SSL,使用SSL協(xié)議來加密HTTP通訊過程。SSL協(xié)議本質(zhì)上是提供了一個(gè)加密通道,我們在這個(gè)通道中傳輸HTTP,便是HTTPS協(xié)議。

證書

要想進(jìn)行SSL通信,服務(wù)器需要有一個(gè)權(quán)威機(jī)構(gòu)認(rèn)證的證書。證書是一個(gè)二進(jìn)制文件,里面包含有一些信息(服務(wù)器的公鑰,域名,有效時(shí)間等)。證書分為很多類型,首先分為三級認(rèn)證:

  • 域名認(rèn)證(Domain Validation, DV):最低級的認(rèn)證,CA只檢查申請者擁有某個(gè)域名,對于這種證書,瀏覽器會在地址欄顯示一把綠色的小鎖。
  • 組織認(rèn)證(Organization Validation, OV):CA除了檢查域名所有權(quán)以外,還會審核組織信息。對于這類認(rèn)證,瀏覽器會在地址欄中顯示公司信息。
  • 擴(kuò)展認(rèn)證(Extended Validation, EV):最高級別的認(rèn)證,相比于組織認(rèn)證,CA會對組織信息進(jìn)行更加嚴(yán)格的審核。

很顯然,認(rèn)證級別越高,覆蓋范圍越廣,證書價(jià)格越貴。本方案以騰訊云提供的域名型DV SSL為例。So Let's qcloud ssl~~

配置過程

申請證書

通過騰訊云控制臺的SSL證書管理界面,便可免費(fèi)申請DV SSL。申請完后需進(jìn)行域名驗(yàn)證。通過添加域名解析指定的DNS記錄驗(yàn)證您的域名所有權(quán),指定如主機(jī)記錄 –> TXT記錄類型 –> 記錄值的解析格式。域名驗(yàn)證成功后,便可以下載SSL證書。

配置Nginx

上傳證書到服務(wù)器后,便可配置nginx采用上傳的證書文件并開啟https。注意安裝nginx時(shí)要額外添加ssl模塊:

./configure --with-http_ssl_module

Nginx開啟https配置如下:

server {
  listen       80;
  server_name  www.lwblog.site;
  #使用 301 重定向,將 HTTP 協(xié)議的訪問導(dǎo)向 HTTPS 協(xié)議。
  return 301 https://$server_name$request_uri;
}

server {
        # SSL Configuration
        listen       443 ssl;
        server_name  www.lwblog.site;
        ssl on;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
        # specify cert files
        ssl_certificate /usr/local/nginx/conf/conf.d/1_www.lwblog.site_bundle.crt;
        ssl_certificate_key /usr/local/nginx/conf/conf.d/2_www.lwblog.site.key;

        location / {
           root   html;
           index  index.html index.htm;
        }
}

重啟nginx,nginx -s relaod。

開啟443端口

/sbin/iptables -I INPUT -p tcp --dport 443 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart

再次訪問便可以看到網(wǎng)站一啟用了https。

安全措施

訪問網(wǎng)站時(shí),用戶很少直接在地址欄輸入https://,總是通過點(diǎn)擊鏈接,或者3xx重定向,從HTTP頁面進(jìn)入HTTPS頁面。攻擊者完全可以在用戶發(fā)出HTTP請求時(shí),劫持并篡改該請求。
另一種情況是惡意網(wǎng)站使用自簽名證書,冒充另一個(gè)網(wǎng)站,這時(shí)瀏覽器會給出警告,但是許多用戶會忽略警告繼續(xù)訪問。
"HTTP嚴(yán)格傳輸安全"(簡稱 HSTS)的作用,就是強(qiáng)制瀏覽器只能發(fā)出HTTPS
請求,并阻止用戶接受不安全的證書。
它在網(wǎng)站的響應(yīng)頭里面,加入一個(gè)強(qiáng)制性聲明。以下例子摘自維基百科

add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";

上面這段頭信息有兩個(gè)作用。

1 在接下來的一年(即31536000秒)中,瀏覽器只要向example.com或其子域名發(fā)送HTTP請求時(shí),必須采用HTTPS來發(fā)起連接。用戶點(diǎn)擊超鏈接或在地址欄輸入http://www.example.com/,瀏覽器應(yīng)當(dāng)自動將http轉(zhuǎn)寫成https,然后直接向https://www.example.com/發(fā)送請求。
2 在接下來的一年中,如果example.com服務(wù)器發(fā)送的證書無效,用戶不能忽略瀏覽器警告,將無法繼續(xù)訪問該網(wǎng)站。

HSTS 很大程度上解決了 SSL 剝離攻擊。只要瀏覽器曾經(jīng)與服務(wù)器建立過一次安全連接,之后瀏覽器會強(qiáng)制使用HTTPS,即使鏈接被換成了HTTP。
該方法的主要不足是,用戶首次訪問網(wǎng)站發(fā)出HTTP請求時(shí),是不受HSTS保護(hù)的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 其實(shí),我對https以前只有一個(gè)大概的了解,最近工作中遇到一個(gè)問題從而將https協(xié)議做了一個(gè)徹底的學(xué)習(xí)和認(rèn)知,下...
    一條魚的星辰大海閱讀 3,544評論 0 1
  • 原文地址 http://blog.csdn.net/u012409247/article/details/4985...
    0fbf551ff6fb閱讀 3,688評論 0 13
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,568評論 19 139
  • 前言 在說HTTPS之前先說說什么是HTTP,HTTP就是我們平時(shí)瀏覽網(wǎng)頁時(shí)候使用的一種協(xié)議。HTTP協(xié)議傳輸?shù)臄?shù)...
    布丁大人閱讀 2,838評論 2 14
  • 1.OkHttp源碼解析(一):OKHttp初階2 OkHttp源碼解析(二):OkHttp連接的"前戲"——HT...
    隔壁老李頭閱讀 21,587評論 24 176

友情鏈接更多精彩內(nèi)容