在我前面介紹的WebAPI文章裏面,介紹了WebAPI的架構設計方面的內容,其中提出瞭如今流行的WebAPI優先的路線,這種也是咱們開發多應用(APP、微信、微網站、商城、以及Winform等方面的整合)的時候值得考慮的線路之一。通常狀況下,因爲HTTP協議的安全性,傳遞的參數容易被攔截,從而可能致使潛在的危險,因此通常WebAPI接口層都採用了HTTPS協議的,也就是採用SSL層來對數據進行安全性的加密的。html
1) HTTPS算法
HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全爲目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,所以加密的詳細內容就須要SSL。 它是一個URI scheme(抽象標識符體系),句法類同http:體系。用於安全的HTTP數據傳輸。https:URL代表它使用了HTTPS,但HTTPS存在不一樣於HTTP的默認端口及一個加密/身份驗證層(在HTTP與TCP之間)。這個系統的最初研發由網景公司進行,提供了身份驗證與加密通信方法,如今它被普遍用於萬維網上安全敏感的通信,例如交易支付方面。瀏覽器
2)HTTPS和HTTP的區別安全
1、https協議須要到ca申請證書,通常免費證書不多,須要交費。服務器
2、http是超文本傳輸協議,信息是明文傳輸,https 則是具備安全性的ssl加密傳輸協議。微信
3、http和https使用的是徹底不一樣的鏈接方式,用的端口也不同,前者是80,後者是443。網絡
4、http的鏈接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。架構
3)https的實現原理框架
有兩種基本的加解密算法類型dom
1)對稱加密:密鑰只有一個,加密解密爲同一個密碼,且加解密速度快,典型的對稱加密算法有DES、AES等;
2)非對稱加密:密鑰成對出現(且根據公鑰沒法推知私鑰,根據私鑰也沒法推知公鑰),加密解密使用不一樣密鑰(公鑰加密須要私鑰解密,私鑰加密須要公鑰解密),相對對稱加密速度較慢,典型的非對稱加密算法有RSA、DSA等。
https的通訊過程
4) https通訊的優勢
1)客戶端產生的密鑰只有客戶端和服務器端能獲得;
2)加密的數據只有客戶端和服務器端才能獲得明文;
3)客戶端到服務端的通訊是安全的。
1)SSL安全套接層協議(Secure Socket Layer)
爲Netscape所研發,用以保障在Internet上數據傳輸之安全,利用數據加密(Encryption)技術,可確保數據在網絡上之傳輸過程當中不會被截取及竊聽。目前通常通用之規格爲40 bit之安全標準,美國則已推出128 bit之更高安全標準,但限制出境。只要3.0版本以上之IE或Netscape瀏覽器便可支持SSL。
當前版本爲3.0。它已被普遍地用於Web瀏覽器與服務器之間的身份認證和加密數據傳輸。
SSL協議位於TCP/IP協議與各類應用層協議之間,是一種國際標準的加密及身份認證通訊協議,爲TCP提供一個可靠的端到端的安全服務,爲兩個通信個體之間提供保密性和完整性(身份鑑別)。SSL協議可分爲兩層:SSL記錄協議(SSL Record Protocol):它創建在可靠的傳輸協議(如TCP)之上,爲高層協議提供數據封裝、壓縮、加密等基本功能的支持。SSL握手協議(SSL Handshake Protocol):它創建在SSL記錄協議之上,用於在實際的數據傳輸開始前,通信雙方進行身份認證、協商加密算法、交換加密密鑰等。
1)SSL協議可用於保護正常運行於TCP之上的任何應用協議,如HTTP、FTP、SMTP或Telnet的通訊,最多見的是用SSL來保護HTTP的通訊。
2)SSL協議的優勢在於它是與應用層協議無關的。高層的應用協議(如HTTP、FTP、Telnet等)能透明地創建於SSL協議之上。
3)SSL協議在應用層協議以前就已經完成加密算法、通訊密鑰的協商以及服務器的認證工做。在此以後應用層協議所傳送的數據都會被加密,從而保證通訊的安全性。
4)SSL協議使用通訊雙方的客戶證書以及CA根證書,容許客戶/服務器應用以一種不能被偷聽的方式通訊,在通訊雙方間創建起了一條安全的、可信任的通訊通道。
5)該協議使用密鑰對傳送數據加密,許多網站都是經過這種協議從客戶端接收信用卡編號等保密信息。經常使用於交易過程當中。
3)SSL功能
1)客戶對服務器的身份認證:
SSL服務器容許客戶的瀏覽器使用標準的公鑰加密技術和一些可靠的認證中心(CA)的證書,來確認服務器的合法性。
2)服務器對客戶的身份認證:
也可經過公鑰技術和證書進行認證,也可經過用戶名,password來認證。
3)創建服務器與客戶之間安全的數據通道:
SSL要求客戶與服務器之間的全部發送的數據都被髮送端加密、接收端解密,同時還檢查數據的完整性。
上面介紹一些基礎知識,咱們能夠簡單的歸納一下,就是引入了HTTPS,能夠很好解決接口參數的安全性問題。這些在不少大廠商的接口裏面,都是使用HTTPS協議的,如騰訊微信、支付寶等接口,特別對於支付內容,使用HTTPS是必須的。
對於支持HTTPS,核心的問題就是解決證書的問題,必須是由第三方權威機構頒發的證書,這樣才能達到不被僞造的可能性,通常咱們採用的是CA證書,這些證書是須要經過付費購買的(天下沒有免費的午飯),證書的購買的供應商網站有不少,能夠選擇本身合適的進行購買。
1)國外的GoDaddy平臺購買證書過程
這個參考博客園站長dudu的介紹內容,這個goDaddy是支持支付寶用美圓購買的,使用平臺是英文,能夠購買域名、證書等服務,是一個影響力較大的廠商。
1) 打開godaddy.com網站,經過菜單進入Products -> SSL&Security -> SSL Certificates,選擇Protect All Subdomains("Wildcard"), 在Pick your plan type中,選擇Standard(Validates domain ownership),而後完成購買。
2)進入My Account -> SSL CERTIFICATES,建立證書(Certificate),建立時將以前獲得的CSR內容複製到「CSR文本框」中。
3)接入來進入GoDaddy的審批流程,在審批過程當中須要驗證域名的全部者(dns填加記錄或上傳html文件至網站目錄),驗證成功後很快就會生成CA證書。
4)下載CA證書文件至生成CSR的服務器上。
普通證書費用是63美圓左右,能夠經過支付寶進行交易。
2)國內沃通平臺購買證書過程
這個是純中文版本的平臺,比較方便使用,費用也比上面的貴一些,分的級別好像也多一些,相對上面那個國外的GoDaddy的三個種類證書,這個產品線分了6個類型。最低的也要接近500塊,相對GoDaddy來講,費用要多一些了。因爲是初步使用,也就購買了這個使用了。
申請購買也很簡單,一步步按提示操做填寫內容便可,大體分爲這幾步:
1)輸入購買的證書類型,以及年限等資料;
2)輸入域名的信息,以及須要域名對應的郵件進行驗證;
3)提交購買訂單後,使用在線支付或者使用公司帳號匯款到指定帳號;
4)客服驗證後,技術人員提供證書生成操做,咱們在列表裏面儘快使用證書密碼下載證書。
最後成功後,在訂單信息裏面,有這樣的列表,提供了兩個SHA1和SHA2兩種加密協議的證書,官方建議使用SHA2。
有了證書,咱們在雲服務器上(如阿里雲)的IIS裏面的證書模塊裏面,能夠導入已有的證書。
導入證書成功後,咱們能夠看到列表裏面有具體的證書了,同時雙擊能夠查看證書詳細信息。
建立一個網站,並指定使用這個證書,端口採用443便可。
通常狀況下,咱們建立這個步驟後,你可使用相似這樣地址:https://www.iqidi.com/測試下具體的網站是否已經開通了,若是能夠正常訪問,那說明你的443端口已經啓動偵聽了,若是沒有,多是沒有啓動,或者是防火牆禁止了,通常狀況下,咱們仍是須要在防火牆裏面增長443端口的入站規則,設置爲容許,不然可能被屏蔽了。
若是都設置了,能夠經過DOS命令行來檢查端口是否已經開始偵聽了。
查詢443端口監聽
netstat -ano | find "443"
若是仍是有問題,能夠請求CA證書的供應商或者雲供應商的技術人員幫你看看,通常都是會配合你解決的,個人開始也是折騰了他們一會,最後也莫名其妙的能夠了。
最後成功後,在Chrome瀏覽器裏面打開地址就有綠色的標誌了。
因爲目前個人API平臺還在搭建完善中,所以這個域名展現仍是沒有東西能夠展現的。
最後的構架會如前面Web API框架圖所示,作到一個統一的整合方案裏面。
因爲Web API層做爲一個公共的接口層,咱們就很好保證了各個界面應用層的數據一致性,若是考慮到響應式的集成處理,咱們甚至能夠把微信應用、APP應用、Web應用作層一套Web程序,即便爲了利用各自應用的特殊性,也能夠把這些應用作的很類似,這樣就給用戶提供了一個統一的界面表示方式,極大提升客戶使用的界面體驗效果,用戶幾乎不須要額外的界面學習,就能夠熟悉整個應用體系的各個模塊使用。
從上面的架構分析來看,咱們的Web API做爲核心層,能夠在上面開發咱們各類企業業務應用,
在目前比較熱門的會員管理、客戶管理等方面,結合微信的應用催化劑,就能夠作的更加符合移動的潮流,從而實現咱們「互聯網+」的應用落地。