




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第七章數(shù)據(jù)的安全傳輸和身份第一頁(yè),共四十七頁(yè),編輯于2023年,星期四本章要點(diǎn)本章在前面介紹的加密和認(rèn)證的基礎(chǔ)上,介紹如何使用SSL協(xié)議加密TCP/IP數(shù)據(jù)流,并介紹基于SSL的、用于加密瀏覽器和WEB服務(wù)器之間通信的HTTPS協(xié)議。SSL和HTTPS不僅可以加密通信,而且可以用于服務(wù)器和客戶身份的驗(yàn)證。用戶瀏覽器訪問(wèn)一個(gè)站點(diǎn),需要確定這個(gè)站點(diǎn)確實(shí)是某個(gè)機(jī)構(gòu)的(說(shuō)不定黑客已經(jīng)攻擊了你使用的域名服務(wù)器,將你導(dǎo)向了黑客偽裝的站點(diǎn))。服務(wù)器在某些時(shí)候也可能需要確定用戶是誰(shuí),以便決定是否向其提供信息。第二頁(yè),共四十七頁(yè),編輯于2023年,星期四本章主要內(nèi)容編制SSL客戶和服務(wù)器程序編制HTTPS客戶和服務(wù)器程序設(shè)置服務(wù)器所使用的證書(shū)設(shè)置客戶程序信任的證書(shū)設(shè)置客戶程序所使用的證書(shū)設(shè)置服務(wù)器信任的證書(shū)第三頁(yè),共四十七頁(yè),編輯于2023年,星期四最簡(jiǎn)單的TCP通信使用JAVA的SOCKET編程客戶向服務(wù)器傳送一個(gè)字符串“Hi”客戶程序:Client2服務(wù)器程序:Server2抓數(shù)據(jù)包:得明文第四頁(yè),共四十七頁(yè),編輯于2023年,星期四第五頁(yè),共四十七頁(yè),編輯于2023年,星期四最簡(jiǎn)單的SSL通信1、最簡(jiǎn)單的SSL服務(wù)器例:編寫(xiě)一個(gè)最簡(jiǎn)單的SSL服務(wù)器程序,它接受客戶程序建立連接,并以加密的方式向客戶程序發(fā)送一串字符Hi.SSL服務(wù)器程序運(yùn)行時(shí)需要指定密鑰庫(kù),以便向客戶程序證明自己的身份。可以通過(guò)編程指定密鑰庫(kù)和通過(guò)JAVA命令行選項(xiàng)兩種方式指定密鑰庫(kù)。本例使用編程指定密鑰庫(kù)。例:javaMySSLServer2、最簡(jiǎn)單的SSL客戶程序例:編寫(xiě)一個(gè)最簡(jiǎn)單的SSL客戶程序,和服務(wù)器建立連接,接受其發(fā)來(lái)的字符串并自動(dòng)對(duì)其進(jìn)行解密。為了使客戶程序能順利地驗(yàn)證服務(wù)器提供的證書(shū),應(yīng)該把服務(wù)器使用的證書(shū)或其簽發(fā)者的證書(shū)提供給客戶程序。例:javaMySSLClient抓包之后發(fā)現(xiàn)數(shù)據(jù)被加密,只能看見(jiàn)密文第六頁(yè),共四十七頁(yè),編輯于2023年,星期四顯示結(jié)果第七頁(yè),共四十七頁(yè),編輯于2023年,星期四第八頁(yè),共四十七頁(yè),編輯于2023年,星期四進(jìn)一步設(shè)置信任關(guān)系上例使用密鑰庫(kù)的證書(shū)是自簽名的證書(shū),本例的客戶程序不是直接信任自簽名證書(shū),而是信任由CA機(jī)構(gòu)頒發(fā)的證書(shū),使用在第六章得到的密鑰庫(kù)文件lfkeystore2。本例也演示了通過(guò)JAVA命令選項(xiàng)來(lái)指定密鑰庫(kù)和密碼例:服務(wù)器MySSLServer使用JAVA命令選項(xiàng)來(lái)指定密鑰庫(kù)和密碼Java–D.ssl.keyStore=lfkeystore2–D.ssl.keyStorePassword=wshr.utMySSLServer2客戶端仍然使用javaMySSLClient第九頁(yè),共四十七頁(yè),編輯于2023年,星期四第十頁(yè),共四十七頁(yè),編輯于2023年,星期四設(shè)置默認(rèn)信任密鑰庫(kù)本例使用默認(rèn)信任密鑰庫(kù)指定客戶程序信任哪些證書(shū)。JAVA默認(rèn)的信任密鑰庫(kù)是c:\j2sdk1.4.0\jre\lib\security目錄下的cacerts文件,使用J2SDK提供的keytool工具可以將客戶信任的證書(shū)導(dǎo)入該密鑰庫(kù),則JAVA程序自動(dòng)信任這些證書(shū)對(duì)應(yīng)的CA簽發(fā)的證書(shū)。在默認(rèn)信任數(shù)據(jù)庫(kù)中已經(jīng)存有一些著名CA的證書(shū),如果服務(wù)器程序所使用的證書(shū)是這些CA簽發(fā)的,則不需要修改默認(rèn)信任數(shù)據(jù)庫(kù)。例:javaMySSLClient2服務(wù)器使用javaMySSLServer2第十一頁(yè),共四十七頁(yè),編輯于2023年,星期四輸入javaMySSLClient2的運(yùn)行結(jié)果第十二頁(yè),共四十七頁(yè),編輯于2023年,星期四由于客戶程序沒(méi)有在程序中通過(guò)System.setProperty()方法,也沒(méi)有在運(yùn)行時(shí)通過(guò)java命令指明客戶程序信任哪個(gè)密鑰庫(kù)中的證書(shū),所以運(yùn)行時(shí)將使用默認(rèn)信任密鑰庫(kù)d:\j2sdk\jre\lib\security\cacerts檢查客戶程序是否信任服務(wù)器程序提供的證書(shū)。第十三頁(yè),共四十七頁(yè),編輯于2023年,星期四使用keytool工具可以看一下默認(rèn)密鑰庫(kù)信任哪些證書(shū)第十四頁(yè),共四十七頁(yè),編輯于2023年,星期四如果服務(wù)器使用的證書(shū)是這些證書(shū)對(duì)應(yīng)的私鑰所簽發(fā)的,則本實(shí)例的程序可以直接運(yùn)行。由于我們使用的證書(shū)是CA“XUYINGXIAO”簽發(fā)的,在默認(rèn)密鑰庫(kù)中不存在其證書(shū),因此需要將”XUYINGXIAO”的證書(shū)導(dǎo)入默認(rèn)密鑰庫(kù)。第十五頁(yè),共四十七頁(yè),編輯于2023年,星期四再執(zhí)行程序截圖第十六頁(yè),共四十七頁(yè),編輯于2023年,星期四通過(guò)KeyStore對(duì)象選擇密鑰庫(kù)除了通過(guò)System.setProperty()方法或者JAVA命令選項(xiàng)指定密鑰庫(kù)及其密碼外,還可以在程序中通過(guò)KeyStore對(duì)象指定密鑰庫(kù)和密碼。在前面各小節(jié)的例子中,保護(hù)密鑰庫(kù)的密碼和各個(gè)條目中保護(hù)私鑰的密碼必須相同,使用KeyStore對(duì)象指定密鑰庫(kù)及密鑰時(shí),兩種密碼可以不同例:javaMySSLServerKs第十七頁(yè),共四十七頁(yè),編輯于2023年,星期四第十八頁(yè),共四十七頁(yè),編輯于2023年,星期四擴(kuò)展的SSL客戶和服務(wù)器程序的例子我們已經(jīng)可以在客戶機(jī)、服務(wù)器之間以加密方式交換信息,剩下的問(wèn)題就是客戶機(jī)和服務(wù)器程序在處理輸入和輸出時(shí)按照什么規(guī)則進(jìn)行,這主要取決于具體應(yīng)用的要求。例:使用一個(gè)簡(jiǎn)單的規(guī)則編寫(xiě)客戶機(jī)/服務(wù)器雙向通信的程序,服務(wù)器按照不同的客戶請(qǐng)求發(fā)送不同的文件到客戶程序,客戶程序根據(jù)服務(wù)器發(fā)來(lái)的標(biāo)題的不同方式保存文件第十九頁(yè),共四十七頁(yè),編輯于2023年,星期四通信規(guī)則的制定服務(wù)器收到客戶發(fā)來(lái)的信息后,如果發(fā)現(xiàn)是.html結(jié)尾,則向客戶程序先發(fā)一串信息:SendingHTML,再發(fā)送一串HTML文本,發(fā)送完畢后發(fā)送SessionOver字符串結(jié)束會(huì)話。如果發(fā)現(xiàn)是.gif,則向客戶程序先發(fā)送一串信息:SendingGIF,再發(fā)送一個(gè)圖片文件客戶機(jī)和服務(wù)器建立連接后,向服務(wù)器發(fā)送請(qǐng)求字符串,然后讀取服務(wù)器反饋信息。若收到SendingHTML字符串則建立HTML為后綴的文件,若收到SendingGIF字符串則建立.gif為后綴的文件,然后繼續(xù)讀取服務(wù)器反饋信息,將讀取的內(nèi)容存入文件。服務(wù)器:javaMySSLServerRule客戶:javaMySSLClientRulehttp://www/x.gif第二十頁(yè),共四十七頁(yè),編輯于2023年,星期四運(yùn)行結(jié)果第二十一頁(yè),共四十七頁(yè),編輯于2023年,星期四查看對(duì)方的證書(shū)等連接信息客戶或服務(wù)器在得到SOCKET類型的對(duì)象后,都可以查看所連接的對(duì)方的證書(shū)??蛻舫绦蚝头?wù)器程序最終都是通過(guò)Socket對(duì)象獲得輸入/輸出流而進(jìn)行雙向通信。通過(guò)Socket對(duì)象不僅可以得到輸入/輸出流,還可以得到SSLSession類型的對(duì)象,該對(duì)象描述了連接雙方的關(guān)系,通過(guò)其方法可以獲得連接雙方的信息。例:服務(wù)器:javaMySSLServerSession客戶:javaMySSLClientSession第二十二頁(yè),共四十七頁(yè),編輯于2023年,星期四第二十三頁(yè),共四十七頁(yè),編輯于2023年,星期四HTTPS客戶及服務(wù)器程序可以使用SSL加密HTTP流量的HTTPSHTTP協(xié)議基本的規(guī)則是:服務(wù)器先讀取瀏覽器發(fā)來(lái)的數(shù)據(jù)(類似“GET/test.html”的字符串),如果是GET請(qǐng)求,則根據(jù)請(qǐng)求的內(nèi)容,向?yàn)g覽器發(fā)送HTTP版本,MIME版本,數(shù)據(jù)類型,數(shù)據(jù)長(zhǎng)度,一個(gè)空行以及數(shù)據(jù)內(nèi)容等信息。瀏覽器只有接收到這樣的信息,才認(rèn)為HTTP協(xié)議執(zhí)行正確,從而將后面發(fā)送的內(nèi)容作為網(wǎng)頁(yè)內(nèi)容顯示出來(lái)。第二十四頁(yè),共四十七頁(yè),編輯于2023年,星期四最簡(jiǎn)單的HTTPS服務(wù)器程序WEB服務(wù)器可以發(fā)送以下消息獲得對(duì)頁(yè)面的請(qǐng)求:“HTTP/1.0200OK”“MIME_version:1.0”“Content_Type:text/html”“Content_Length:”+c.length()“”C其中C中包含的是網(wǎng)頁(yè)的內(nèi)容輸入:java-D.ssl.keyStore=lfkeystore2–D.ssl.keyStorePassword=wshr.utMyHTTPSServer第二十五頁(yè),共四十七頁(yè),編輯于2023年,星期四第二十六頁(yè),共四十七頁(yè),編輯于2023年,星期四注意:https默認(rèn)的端口號(hào)是443,若要用其他的端口號(hào),必須在客戶程序中給出。第二十七頁(yè),共四十七頁(yè),編輯于2023年,星期四出現(xiàn)的警告信息第二十八頁(yè),共四十七頁(yè),編輯于2023年,星期四出現(xiàn)警告的原因因?yàn)樽C書(shū)中的名稱是”LiuFang“,而訪問(wèn)該站點(diǎn)時(shí)我們使用了來(lái)訪問(wèn)這個(gè)站點(diǎn)。如果創(chuàng)建證書(shū)時(shí)使用服務(wù)器的IP地址或者域名作為證書(shū)的名稱,則該警告信息將不會(huì)出現(xiàn)。第二十九頁(yè),共四十七頁(yè),編輯于2023年,星期四要使用作為域名,必須進(jìn)行域名解析,簡(jiǎn)單的域名解析可以使用hosts文件,hosts在c:\windows\system32\drivers\etc\
,目錄,只要加上
執(zhí)行批處理文件:comstore.bat啟動(dòng)服務(wù)器:java–D.ssl.keyStore=mycomstore–D.ssl.keyStorePassword=wshr.utMyHTTPSServer第三十頁(yè),共四十七頁(yè),編輯于2023年,星期四在瀏覽器中輸入,將出現(xiàn)下圖第三十一頁(yè),共四十七頁(yè),編輯于2023年,星期四但是由于證書(shū)不是權(quán)威CA所簽發(fā)的,所以仍然出現(xiàn)了【該安全證書(shū)由您沒(méi)有選定信任的公司簽發(fā)】的警告處理:由信任的CA來(lái)簽發(fā)證書(shū)保存在密鑰庫(kù)mycomstore2中,再輸入瀏覽時(shí)將直接看到網(wǎng)頁(yè),而不再出現(xiàn)警告框。服務(wù)器執(zhí)行:java–D.ssl.keyStore=mycomstore2–D.ssl.keyStorePassword=wshr.utMyHTTPSServer第三十二頁(yè),共四十七頁(yè),編輯于2023年,星期四最簡(jiǎn)單的HTTPS客戶程序該客戶程序可以在加密和不加密的方式下進(jìn)行不加密的方式,輸入:javaHttpsClient>my.html,這里將屏幕輸出重定向到了網(wǎng)頁(yè)my.html中第三十三頁(yè),共四十七頁(yè),編輯于2023年,星期四加密的方式若使用簽名3.2.1節(jié)的HTTPS服務(wù)器,輸入JavaHttpsClient,會(huì)出現(xiàn)出錯(cuò)信息,這是因?yàn)闆](méi)有定義客戶端信任的密鑰庫(kù)加密的方式,輸入:java-D.ssl.trustStore=clienttrustHttpsClient
:1443(結(jié)果出錯(cuò),因服務(wù)器證書(shū)是一域名作為名字的)第三十四頁(yè),共四十七頁(yè),編輯于2023年,星期四出錯(cuò)信息第三十五頁(yè),共四十七頁(yè),編輯于2023年,星期四第三十六頁(yè),共四十七頁(yè),編輯于2023年,星期四輸入java-D.ssl.trustStore=clienttrustHttpsClient
:1443程序正常運(yùn)行。第三十七頁(yè),共四十七頁(yè),編輯于2023年,星期四第三十八頁(yè),共四十七頁(yè),編輯于2023年,星期四基于Socket的HTTPS客戶程序可以使用更底層的Socket類來(lái)設(shè)計(jì)客戶程序。獲得Socket類型對(duì)象后,就可以和以前一樣得到輸入和輸出流,不同的是輸入和輸出流要按照HTTP協(xié)議規(guī)定的方式進(jìn)行通信。例:javaHttpsSocketClient
第三十九頁(yè),共四十七頁(yè),編輯于2023年,星期四第四十頁(yè),共四十七頁(yè),編輯于2023年,星期四傳輸實(shí)際文件可以設(shè)計(jì)服務(wù)器向客戶傳輸實(shí)際文件思路:客戶程序按照HTTP協(xié)議格式給出需要的文件,服務(wù)器接收后根據(jù)用戶要求解析出文件路徑和格式從而將文件發(fā)回給客戶。要解決的問(wèn)題:(1)如何獲得文件名:在瀏覽器輸入/xx/yy.html
的字符串,服務(wù)器接收到的是”GET/xx/yy.htmlHTTP/1.1”,因此,文件的相對(duì)路徑就在獲得的字符串的第一和第二個(gè)空格之間。第四十一頁(yè),共四十七頁(yè),編輯于2023年,星期四(2)若在瀏覽器中的輸入不帶文件名,如輸入為或/t/,怎么辦?解決:若發(fā)現(xiàn)輸入內(nèi)容為空字符串或以“/”結(jié)尾,加上默認(rèn)的文件名如:index.html例:運(yùn)行MyHTTPSServerFile.bat第四十二頁(yè),共四十七頁(yè),編輯于2023年,星期四第四十三頁(yè),共四十七頁(yè),
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度互聯(lián)網(wǎng)企業(yè)股權(quán)收購(gòu)與整合協(xié)議
- 二零二五年度農(nóng)業(yè)科技企業(yè)員工借調(diào)與種植技術(shù)合同
- 二零二五年度智能硬件委托擔(dān)保服務(wù)協(xié)議
- 2025年度高空作業(yè)安全協(xié)議承諾書(shū)與高空作業(yè)設(shè)備檢測(cè)維修合同
- 2025年度智慧城市保安員聘用合同范本
- 2025年度高校學(xué)生社會(huì)實(shí)踐基地實(shí)習(xí)服務(wù)合同
- 2025年普洱貨運(yùn)從業(yè)資格證考些什么內(nèi)容
- 2025年福建貨運(yùn)從業(yè)資格證考試試題
- 2025年沈陽(yáng)貨運(yùn)從業(yè)資格證考試題答案大全及解析
- 2025年黃山貨運(yùn)從業(yè)資格考題
- 北京市2024年中考英語(yǔ)真題【附參考答案】
- 某大學(xué)中醫(yī)學(xué)(專升本)學(xué)士學(xué)位考試復(fù)習(xí)題
- 縣醫(yī)院聘請(qǐng)社會(huì)監(jiān)督員實(shí)施方案(經(jīng)典版)
- 江西省數(shù)字產(chǎn)業(yè)集團(tuán)有限公司招聘筆試真題2023
- DL-T+5174-2020燃?xì)?蒸汽聯(lián)合循環(huán)電廠設(shè)計(jì)規(guī)范
- 弟子規(guī)帶拼音全文課件省公共課一等獎(jiǎng)全國(guó)賽課獲獎(jiǎng)?wù)n件
- 網(wǎng)課智慧樹(shù)知道《人工智能引論(浙江大學(xué))》章節(jié)測(cè)試答案
- 2024年揚(yáng)州市職業(yè)大學(xué)單招職業(yè)適應(yīng)性測(cè)試題庫(kù)附答案
- 猜猜我有多愛(ài)你-繪本故事
- 人教版pep小學(xué)四年級(jí)英語(yǔ)下冊(cè)全冊(cè)完整
- 人教部編版《道德與法治》六年級(jí)下冊(cè)第9課《日益重要的國(guó)際組織》精美課件
評(píng)論
0/150
提交評(píng)論