Web API應(yīng)用支持HTTPS的經(jīng)驗(yàn)總結(jié)

在我前面介紹的WebAPI文章里面萍歉,介紹了WebAPI的架構(gòu)設(shè)計(jì)方面的內(nèi)容喇肋,其中提出了現(xiàn)在流行的WebAPI優(yōu)先的路線坟乾,這種也是我們開發(fā)多應(yīng)用(APP、微信蝶防、微網(wǎng)站甚侣、商城、以及Winform等方面的整合)的時(shí)候值得考慮的線路之一间学。一般情況下殷费,由于HTTP協(xié)議的安全性印荔,傳遞的參數(shù)容易被攔截,從而可能導(dǎo)致潛在的危險(xiǎn)详羡,所以一般WebAPI接口層都采用了HTTPS協(xié)議的仍律,也就是采用SSL層來對數(shù)據(jù)進(jìn)行安全性的加密的。

1实柠、HTTPS基礎(chǔ)知識(shí)介紹

1) HTTPS
HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer)染苛,是以安全為目標(biāo)的HTTP通道,簡單講是HTTP的安全版主到。即HTTP下加入SSL層茶行,HTTPS的安全基礎(chǔ)是SSL,因此加密的詳細(xì)內(nèi)容就需要SSL登钥。 它是一個(gè)URI scheme(抽象標(biāo)識(shí)符體系)畔师,句法類同http:體系。用于安全的HTTP數(shù)據(jù)傳輸牧牢。https:URL表明它使用了HTTPS看锉,但HTTPS存在不同于HTTP的默認(rèn)端口及一個(gè)加密/身份驗(yàn)證層(在HTTP與TCP之間)。這個(gè)系統(tǒng)的最初研發(fā)由網(wǎng)景公司進(jìn)行塔鳍,提供了身份驗(yàn)證與加密通訊方法伯铣,現(xiàn)在它被廣泛用于萬維網(wǎng)上安全敏感的通訊,例如交易支付方面轮纫。
2)HTTPS和HTTP的區(qū)別
  一腔寡、https協(xié)議需要到ca申請證書,一般免費(fèi)證書很少掌唾,需要交費(fèi)放前。
  二、http是超文本傳輸協(xié)議糯彬,信息是明文傳輸凭语,https 則是具有安全性的ssl加密傳輸協(xié)議。
  三撩扒、http和https使用的是完全不同的連接方式似扔,用的端口也不一樣,前者是80搓谆,后者是443炒辉。
四、http的連接很簡單挽拔,是無狀態(tài)的辆脸;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸但校、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議螃诅,比http協(xié)議安全。
3)https的實(shí)現(xiàn)原理
有兩種基本的加解密算法類型
1)對稱加密:密鑰只有一個(gè),加密解密為同一個(gè)密碼术裸,且加解密速度快倘是,典型的對稱加密算法有DES、AES等袭艺;
2)非對稱加密:密鑰成對出現(xiàn)(且根據(jù)公鑰無法推知私鑰搀崭,根據(jù)私鑰也無法推知公鑰),加密解密使用不同密鑰(公鑰加密需要私鑰解密猾编,私鑰加密需要公鑰解密)瘤睹,相對對稱加密速度較慢,典型的非對稱加密算法有RSA答倡、DSA等轰传。

https的通信過程


4) https通信的優(yōu)點(diǎn)
1)客戶端產(chǎn)生的密鑰只有客戶端和服務(wù)器端能得到;
2)加密的數(shù)據(jù)只有客戶端和服務(wù)器端才能得到明文瘪撇;
3)客戶端到服務(wù)端的通信是安全的获茬。

2、SSL基礎(chǔ)知識(shí)介紹

1)SSL安全套接層協(xié)議(Secure Socket Layer)
  為Netscape所研發(fā)倔既,用以保障在Internet上數(shù)據(jù)傳輸之安全恕曲,利用數(shù)據(jù)加密(Encryption)技術(shù)嫂侍,可確保數(shù)據(jù)在網(wǎng)絡(luò)上之傳輸過程中不會(huì)被截取及竊聽挂洛。目前一般通用之規(guī)格為40 bit之安全標(biāo)準(zhǔn),美國則已推出128 bit之更高安全標(biāo)準(zhǔn)协屡,但限制出境实蓬。只要3.0版本以上之IE或Netscape瀏覽器即可支持SSL稿存。
  當(dāng)前版本為3.0。它已被廣泛地用于Web瀏覽器與服務(wù)器之間的身份認(rèn)證和加密數(shù)據(jù)傳輸瞳秽。
SSL協(xié)議位于TCP/IP協(xié)議與各種應(yīng)用層協(xié)議之間瓣履,是一種國際標(biāo)準(zhǔn)的加密及身份認(rèn)證通信協(xié)議,為TCP提供一個(gè)可靠的端到端的安全服務(wù),為兩個(gè)通訊個(gè)體之間提供保密性和完整性(身份鑒別)练俐。SSL協(xié)議可分為兩層:SSL記錄協(xié)議(SSL Record Protocol):它建立在可靠的傳輸協(xié)議(如TCP)之上袖迎,為高層協(xié)議提供數(shù)據(jù)封裝、壓縮腺晾、加密等基本功能的支持燕锥。SSL握手協(xié)議(SSL Handshake Protocol):它建立在SSL記錄協(xié)議之上,用于在實(shí)際的數(shù)據(jù)傳輸開始前悯蝉,通訊雙方進(jìn)行身份認(rèn)證归形、協(xié)商加密算法、交換加密密鑰等鼻由。
2)SSL協(xié)議特點(diǎn)
1)SSL協(xié)議可用于保護(hù)正常運(yùn)行于TCP之上的任何應(yīng)用協(xié)議暇榴,如HTTP厚棵、FTP、SMTP或Telnet的通信蔼紧,最常見的是用SSL來保護(hù)HTTP的通信婆硬。
2)SSL協(xié)議的優(yōu)點(diǎn)在于它是與應(yīng)用層協(xié)議無關(guān)的。高層的應(yīng)用協(xié)議(如HTTP奸例、FTP彬犯、Telnet等)能透明地建立于SSL協(xié)議之上。
3)SSL協(xié)議在應(yīng)用層協(xié)議之前就已經(jīng)完成加密算法查吊、通信密鑰的協(xié)商以及服務(wù)器的認(rèn)證工作谐区。在此之后應(yīng)用層協(xié)議所傳送的數(shù)據(jù)都會(huì)被加密,從而保證通信的安全性逻卖。
4)SSL協(xié)議使用通信雙方的客戶證書以及CA根證書卢佣,允許客戶/服務(wù)器應(yīng)用以一種不能被偷聽的方式通信,在通信雙方間建立起了一條安全的箭阶、可信任的通信通道虚茶。
5)該協(xié)議使用密鑰對傳送數(shù)據(jù)加密,許多網(wǎng)站都是通過這種協(xié)議從客戶端接收信用卡編號(hào)等保密信息仇参。常用于交易過程中嘹叫。

3)SSL功能
1)客戶對服務(wù)器的身份認(rèn)證:
SSL服務(wù)器允許客戶的瀏覽器使用標(biāo)準(zhǔn)的公鑰加密技術(shù)和一些可靠的認(rèn)證中心(CA)的證書,來確認(rèn)服務(wù)器的合法性诈乒。

2)服務(wù)器對客戶的身份認(rèn)證:
也可通過公鑰技術(shù)和證書進(jìn)行認(rèn)證罩扇,也可通過用戶名,password來認(rèn)證怕磨。

3)建立服務(wù)器與客戶之間安全的數(shù)據(jù)通道:
SSL要求客戶與服務(wù)器之間的所有發(fā)送的數(shù)據(jù)都被發(fā)送端加密喂饥、接收端解密,同時(shí)還檢查數(shù)據(jù)的完整性肠鲫。


3员帮、支持SSL的CA證書購買

上面介紹一些基礎(chǔ)知識(shí),我們可以簡單的概括一下导饲,就是引入了HTTPS捞高,可以很好解決接口參數(shù)的安全性問題。這些在很多大廠商的接口里面渣锦,都是使用HTTPS協(xié)議的硝岗,如騰訊微信、支付寶等接口袋毙,特別對于支付內(nèi)容型檀,使用HTTPS是必須的。
對于支持HTTPS听盖,核心的問題就是解決證書的問題胀溺,必須是由第三方權(quán)威機(jī)構(gòu)頒發(fā)的證書裂七,這樣才能達(dá)到不被偽造的可能性,一般我們采用的是CA證書月幌,這些證書是需要通過付費(fèi)購買的(天下沒有免費(fèi)的午餐)碍讯,證書的購買的供應(yīng)商網(wǎng)站有很多悬蔽,可以選擇自己合適的進(jìn)行購買扯躺。
1)國外的GoDaddy平臺(tái)購買證書過程
這個(gè)參考博客園站長dudu的介紹內(nèi)容,這個(gè)goDaddy是支持支付寶用美元購買的蝎困,使用平臺(tái)是英文录语,可以購買域名、證書等服務(wù)禾乘,是一個(gè)影響力較大的廠商澎埠。
1) 打開godaddy.com網(wǎng)站,通過菜單進(jìn)入Products -> SSL&Security -> SSL Certificates始藕,選擇Protect All Subdomains("Wildcard")蒲稳, 在Pick your plan type中,選擇Standard(Validates domain ownership)伍派,然后完成購買江耀。
2)進(jìn)入My Account -> SSL CERTIFICATES,創(chuàng)建證書(Certificate)诉植,創(chuàng)建時(shí)將之前得到的CSR內(nèi)容復(fù)制到“CSR文本框”中祥国。
3)接入來進(jìn)入GoDaddy的審批流程,在審批過程中需要驗(yàn)證域名的所有者(dns填加記錄或上傳html文件至網(wǎng)站目錄)晾腔,驗(yàn)證成功后很快就會(huì)生成CA證書舌稀。
4)下載CA證書文件至生成CSR的服務(wù)器上。

普通證書費(fèi)用是63美元左右灼擂,可以通過支付寶進(jìn)行交易壁查。


2)國內(nèi)沃通平臺(tái)購買證書過程
這個(gè)是純中文版本的平臺(tái),比較方便使用剔应,費(fèi)用也比上面的貴一些潮罪,分的級別好像也多一些,相對上面那個(gè)國外的GoDaddy的三個(gè)種類證書领斥,這個(gè)產(chǎn)品線分了6個(gè)類型嫉到。最低的也要接近500塊,相對GoDaddy來說月洛,費(fèi)用要多一些了何恶。由于是初步使用,也就購買了這個(gè)使用了嚼黔。
申請購買也很簡單细层,一步步按提示操作填寫內(nèi)容即可惜辑,大致分為這幾步:
1)輸入購買的證書類型,以及年限等資料疫赎;
2)輸入域名的信息盛撑,以及需要域名對應(yīng)的郵件進(jìn)行驗(yàn)證;
3)提交購買訂單后捧搞,使用在線支付或者使用公司賬號(hào)匯款到指定賬號(hào)抵卫;
4)客服驗(yàn)證后,技術(shù)人員提供證書生成操作胎撇,我們在列表里面盡快使用證書密碼下載證書介粘。

最后成功后,在訂單信息里面晚树,有這樣的列表姻采,提供了兩個(gè)SHA1和SHA2兩種加密協(xié)議的證書,官方建議使用SHA2爵憎。


4慨亲、Web API應(yīng)用支持HTTPS

有了證書,我們在云服務(wù)器上(如阿里云)的IIS里面的證書模塊里面宝鼓,可以導(dǎo)入已有的證書刑棵。


導(dǎo)入證書成功后,我們可以看到列表里面有具體的證書了席函,同時(shí)雙擊可以查看證書詳細(xì)信息铐望。


創(chuàng)建一個(gè)網(wǎng)站,并指定使用這個(gè)證書茂附,端口采用443即可正蛙。

一般情況下,我們創(chuàng)建這個(gè)步驟后营曼,你可以使用類似這樣地址:(https://www.iqidi.com)乒验。
測試下具體的網(wǎng)站是否已經(jīng)開通了,如果可以正常訪問蒂阱,那說明你的443端口已經(jīng)啟動(dòng)偵聽了锻全,如果沒有,可能是沒有啟動(dòng)录煤,或者是防火墻禁止了鳄厌,一般情況下,我們還是需要在防火墻里面增加443端口的入站規(guī)則妈踊,設(shè)置為允許了嚎,否則可能被屏蔽了。

如果都設(shè)置了,可以通過DOS命令行來檢查端口是否已經(jīng)開始偵聽了歪泳。
查詢443端口監(jiān)聽
netstat -ano | find "443"

如果還是有問題萝勤,可以請求CA證書的供應(yīng)商或者云供應(yīng)商的技術(shù)人員幫你看看,一般都是會(huì)配合你解決的呐伞,我的開始也是折騰了他們一會(huì)敌卓,最后也莫名其妙的可以了。
最后成功后伶氢,在Chrome瀏覽器里面打開地址就有綠色的標(biāo)志了趟径。



由于目前我的API平臺(tái)還在搭建完善中,因此這個(gè)域名展示還是沒有東西可以展示的鞍历。
最后的構(gòu)架會(huì)如前面Web API框架圖所示舵抹,做到一個(gè)統(tǒng)一的整合方案里面肪虎。



由于Web API層作為一個(gè)公共的接口層劣砍,我們就很好保證了各個(gè)界面應(yīng)用層的數(shù)據(jù)一致性,如果考慮到響應(yīng)式的集成處理扇救,我們甚至可以把微信應(yīng)用刑枝、APP應(yīng)用、Web應(yīng)用做層一套Web程序迅腔,即使為了利用各自應(yīng)用的特殊性装畅,也可以把這些應(yīng)用做的很相似,這樣就給用戶提供了一個(gè)統(tǒng)一的界面表示方式沧烈,極大提高客戶使用的界面體驗(yàn)效果掠兄,用戶幾乎不需要額外的界面學(xué)習(xí),就可以熟悉整個(gè)應(yīng)用體系的各個(gè)模塊使用锌雀。

從上面的架構(gòu)分析來看蚂夕,我們的Web API作為核心層,可以在上面開發(fā)我們各種企業(yè)業(yè)務(wù)應(yīng)用腋逆,

在目前比較熱門的會(huì)員管理婿牍、客戶管理等方面,結(jié)合微信的應(yīng)用催化劑惩歉,就可以做的更加符合移動(dòng)的潮流等脂,從而實(shí)現(xiàn)我們“互聯(lián)網(wǎng)+”的應(yīng)用落地。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末撑蚌,一起剝皮案震驚了整個(gè)濱河市上遥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌争涌,老刑警劉巖粉楚,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異第煮,居然都是意外死亡解幼,警方通過查閱死者的電腦和手機(jī)抑党,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撵摆,“玉大人底靠,你說我怎么就攤上這事√芈粒” “怎么了暑中?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鲫剿。 經(jīng)常有香客問我鳄逾,道長,這世上最難降的妖魔是什么灵莲? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任雕凹,我火速辦了婚禮,結(jié)果婚禮上政冻,老公的妹妹穿的比我還像新娘枚抵。我一直安慰自己,他們只是感情好明场,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布汽摹。 她就那樣靜靜地躺著,像睡著了一般苦锨。 火紅的嫁衣襯著肌膚如雪逼泣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天舟舒,我揣著相機(jī)與錄音拉庶,去河邊找鬼。 笑死魏蔗,一個(gè)胖子當(dāng)著我的面吹牛砍的,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播莺治,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼廓鞠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了谣旁?” 一聲冷哼從身側(cè)響起床佳,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎榄审,沒想到半個(gè)月后砌们,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年浪感,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了昔头。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,110評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡影兽,死狀恐怖揭斧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情峻堰,我是刑警寧澤讹开,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站捐名,受9級特大地震影響旦万,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜镶蹋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一成艘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧梅忌,春花似錦狰腌、人聲如沸除破。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瑰枫。三九已至踱葛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間光坝,已是汗流浹背尸诽。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盯另,地道東北人性含。 一個(gè)月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像鸳惯,于是被迫代替她去往敵國和親商蕴。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評論 2 355

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