中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

大拿分享:去哪兒網(wǎng)https改造分享

2021-02-14    分類: 網(wǎng)站建設(shè)

https大大改善了網(wǎng)站的安全性,減少了流量劫持,越安全的網(wǎng)站對用戶越有益。即便是https改造有些難度,也應(yīng)當(dāng)大力推進(jìn)https的改造。下面我們特邀了去哪網(wǎng)的同學(xué)進(jìn)行了關(guān)于https改造的分享!

本文作者:去哪兒高級工程師 歐陽何順、去哪兒網(wǎng)SEO負(fù)責(zé)人 呂令建

 一、理解HTTPS

先不聊HTTP和HTTPS的區(qū)別,從聊天軟件說起,假設(shè)我們要實現(xiàn)A能發(fā)一個hello消息給B,如果我們要實現(xiàn)這個聊天軟件,只考慮安全性問題,要實現(xiàn)A發(fā)給B的hello消息包,即使被中間人攔截到了,也無法得知消息的內(nèi)容。

那么,如何做到真正的安全呢?目標(biāo)是A與B通信的內(nèi)容,有且只有A和B有能力看到通信的真正內(nèi)容,為了防止內(nèi)容被第三方竊取,發(fā)送方可以通過密鑰S對聊天內(nèi)容進(jìn)行加密,接收方在收到聊天內(nèi)容之后,再用密鑰S解密聊天內(nèi)容,只要密鑰不公開給第三者,同時密鑰S足夠安全,我們就可以保證只有A與B知道聊天內(nèi)容。

二、HTTPS的優(yōu)缺點

優(yōu)點 

SEO方面:谷歌曾在2014年8月份調(diào)整搜索引擎算法,并稱“比起同等HTTP網(wǎng)站,采用HTTPS加密的網(wǎng)站在搜索結(jié)果中的排名將會更高”。

安全性:盡管HTTPS并非絕對安全,掌握根證書的機構(gòu)、掌握加密算法的組織同樣可以進(jìn)行中間人形式的攻擊,但HTTPS仍是現(xiàn)行架構(gòu)下最安全的解決方案,主要有以下幾個好處:

使用HTTPS協(xié)議可認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機和服務(wù)器;

HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,要比http協(xié)議安全,可防止數(shù)據(jù)在傳輸過程中不被竊取、改變,確保數(shù)據(jù)的完整性;

HTTPS是現(xiàn)行架構(gòu)下最安全的解決方案,雖然不是絕對安全,但它大幅增加了中間人攻擊的成本。

缺點 

SEO方面:據(jù)ACM CoNEXT數(shù)據(jù)顯示,使用HTTPS協(xié)議會使頁面的加載時間延長近50%,增加10%到20%的耗電,此外,HTTPS協(xié)議還會影響緩存,增加數(shù)據(jù)開銷和功耗,甚至已有安全措施也會受到影響也會因此而受到影響。

經(jīng)濟方面:SSL證書需要錢,功能越強大的證書費用越高,個人網(wǎng)站、小網(wǎng)站沒有必要一般不會用;

HTTPS連接緩存不如HTTP高效,大流量網(wǎng)站如非必要也不會采用,流量成本太高;

HTTPS連接服務(wù)器端資源占用高很多,支持訪客稍多的網(wǎng)站需要投入更大的成本,如果全部采用HTTPS,基于大部分計算資源閑置的假設(shè)的VPS的平均成本會上去;

HTTPS協(xié)議握手階段比較費時,對網(wǎng)站的相應(yīng)速度有負(fù)面影響,如非必要,沒有理由犧牲用戶體驗。

三、支持HTTPS的方式

增加HTTPS的支持需要在nginx或者tomcat上增加證書(證書需要ops來購買),兩種方法只需要選用其中一種。我們選擇了通過nginx配置證書的方式來做HTTPS支持的事情。原因是這種方式可以通過ops統(tǒng)一配置證書,不需要在每臺服務(wù)器上依次配置HTTPS證書,能提升配置效率。

通過tomcat配置證書

在開發(fā)環(huán)境里時,需要自己來生成證書:1、生成證書;2、找到j(luò)ava的目錄;3、生成一個證書。

  • keytool -v-genkey -alias tomcat -keyalg RSA -keystore ~/keystore

記住生成證書時的密碼

在tomcat的conf/server.xml 配置里增加connector

譬如,我的是server.xml

  •     <Connector port="8443"

  •                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

  •                enableLookups="true" disableUploadTimeout="true"

  •                acceptCount="100" debug="0" scheme="https" secure="true"

  •                clientAuth="false" sslProtocol="TLS"

  •                keystorePass="121212"  ---- 這個是您當(dāng)時的密碼

  •                SSLEnabled="true"

  •                keystoreFile="/home/q/keystore" -- 這個您第二步時,生成證書的地址

  •                />

使用這種方法,直接用request.getSchmeme()能夠看到https

通過nginx配置證書

在已經(jīng)購買好證書的前提下,可以通過以下方式配置證書。

nginx配置

  • server {

  •        listen 443; 

  •         server_name dujia.qunar.com;

  •         charset utf8; 

  •         gzip off; 

  •         ssl on;

  •         ssl_certificate/home/q/nginx/ssl/server.crt;

  •         ssl_certificate_key/home/q/nginx/ssl/server.key; 

  •         if ( $request_method !~ GET|POST|HEAD ) {

  •             return 403;

  •         }

  •        proxy_set_header Host "dujia.qunar.com";

  •         proxy_set_header X-Real-IP$remote_addr;

  •         proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;

  •         proxy_set_header dj-sch "https";

  •         proxy_set_header X-Real-Scheme $scheme;

  •         location / {

  •             proxy_pass http://127.0.0.1:80;

  •             #proxy_pass http://p.tuan.qunar.com;

  •         }

  •      }

在java中通過X-Real-Scheme或dj-sch獲取當(dāng)前協(xié)議

SchemeUtil.java

  •     private static String HTTPS_HEADER = "X-Real-Scheme";

  •     private static String HTTPS_SCHEME = "https";

  •     private static String HTTP_SCHEME = "http";

  •     public static String getScheme(HttpServletRequest request){

  •         String scheme = request.getHeader(HTTPS_HEADER);

  •         if(scheme != null &&scheme.equals(HTTPS_SCHEME)){

  •             return HTTPS_SCHEME;

  •         }else {

  •             return HTTP_SCHEME;

  •         }

  •     }

四、代碼涉及的改動

頁面請求的靜態(tài)資源

js && css

后臺將jsp中

域名為http://*.quanrzz.com 的js,css鏈接改為 //*.qunarzz.com

圖片

將jsp和java工程中給出的圖片url進(jìn)行修改(原因是當(dāng)前實用的圖片服務(wù)器不能同時支持http和https),圖片的http和https域名對應(yīng)關(guān)系如下:

QQ截圖20170401135246.jpg 

接口

內(nèi)部接口:修改接口返回的url,統(tǒng)一格式為://xxx.xx.xx/;

圖片url會根據(jù)服務(wù)請求端的協(xié)議做自適應(yīng),比如:用戶以https協(xié)議請求服務(wù),接口返回的圖片url對應(yīng)的協(xié)議也是https。圖片url不以“//xxx.xx.xx/”形式返回的原因是android和ios默認(rèn)不支持展示不帶協(xié)議的圖片。

外部接口:當(dāng)調(diào)用其他業(yè)務(wù)線的一些接口不支持https時,我們的處理方式是通過代理接口來調(diào)用這些外部接口。

五、遇到的問題及處理方案

nginx上對443端口的請求在header里添加https標(biāo)記,需要和后端保證一致;

用戶中心個別的css和js在https環(huán)境下需要在引入時標(biāo)記css/js=ssl;

同一個域名下面,部分內(nèi)部調(diào)用的接口,是不需要支持https的,因此在做nginx轉(zhuǎn)發(fā)的時候,需要針對這些uri做特殊處理。

網(wǎng)站題目:大拿分享:去哪兒網(wǎng)https改造分享
URL網(wǎng)址:http://www.rwnh.cn/news13/100863.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化服務(wù)器托管、動態(tài)網(wǎng)站、微信小程序、ChatGPT、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
昭通市| 布拖县| 乌鲁木齐市| 兰考县| 克东县| 中宁县| 金阳县| 抚宁县| 深圳市| 禹城市| 仲巴县| 任丘市| 丽水市| 滕州市| 易门县| 阿克| 高陵县| 侯马市| 开阳县| 庄浪县| 桃江县| 荃湾区| 东丰县| 嘉义县| 兖州市| 临猗县| 遵义县| 嘉义市| 长葛市| 沙洋县| 盘锦市| 武强县| 建湖县| 桃源县| 磐安县| 丹江口市| 武威市| 桃园市| 浪卡子县| 民和| 青川县|