版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
北京市西城經(jīng)濟(jì)科學(xué)大學(xué)畢業(yè)設(shè)計(jì)題目:SSL合同的分析實(shí)現(xiàn)及應(yīng)用姓名:李軍學(xué)號(hào):K學(xué)院:北京市西城經(jīng)濟(jì)科學(xué)大學(xué)專業(yè):計(jì)算機(jī)網(wǎng)絡(luò)與安全管理指導(dǎo)教師:萬纓5月本人聲明聲明內(nèi)容以下:我聲明,本設(shè)計(jì)及其研究工作是由本人在導(dǎo)師指導(dǎo)下獨(dú)立完畢的,在完畢設(shè)計(jì)時(shí)所運(yùn)用的一切資料均已在參考文獻(xiàn)中列出。摘要現(xiàn)在,隨著Internet的快速發(fā)展,互聯(lián)網(wǎng)上的信息安全越來越引發(fā)人們的關(guān)注。特別是近年來網(wǎng)上銀行、電子商務(wù)和電子政務(wù)的發(fā)展,如何確保傳輸信息,特別是交易信息的保密性、完整性已成為繼續(xù)解決的問題。安全套接層合同(SecuritySocketLayerProtocol,簡(jiǎn)稱SSL)是Internet上進(jìn)行保密通信的一種安全合同。核心詞:加密算法,數(shù)據(jù)傳輸,SSL合同,SSL實(shí)現(xiàn),SSL缺點(diǎn)目錄:1.引言 11.1SSL合同概述 11.2SSL合同的體系構(gòu)造 12.SSL合同工作原理 23.SSL統(tǒng)計(jì)合同 34.SSL握手合同 45.SSL合同的實(shí)現(xiàn) 65.1OpenSSL初始化 65.2選擇會(huì)話合同 65.3創(chuàng)立會(huì)話環(huán)境 65.4建立SSL套接字 75.5完畢SSL握手 75.6進(jìn)行數(shù)據(jù)傳輸 75.7結(jié)束SSL通信 76.SSL合同的缺點(diǎn) 86.1密鑰管理問題 86.2加密強(qiáng)度問題 86.3數(shù)字簽名問題 86.4必須建立在可靠連接基礎(chǔ)上 86.5多方通信體現(xiàn)欠佳 87.結(jié)束語 9參考文獻(xiàn) 101.引言
SSL是一種在客戶端和服務(wù)器端之間建立安全通道的合同。SSL一經(jīng)提出,就在Internet上得到廣泛的應(yīng)用。SSL最慣用來保護(hù)Web的安全。為了保護(hù)存有敏感信息Web的服務(wù)器的安全,消除顧客在Internet上數(shù)據(jù)傳輸?shù)陌踩檻]。OpenSSL是一種支持SSL認(rèn)證的服務(wù)器.它是一種源碼開放的自由軟件,支持多個(gè)操作系統(tǒng)。OpenSSL軟件的目的是實(shí)現(xiàn)一種完整的、強(qiáng)健的、商業(yè)級(jí)的開放源碼工具,通過強(qiáng)大的加密算法來實(shí)現(xiàn)建立在傳輸層之上的安全性。OpenSSL包含一套SSL合同的完整接口,應(yīng)用程序應(yīng)用它們能夠很方便的建立起安全套接層,進(jìn)而能夠通過網(wǎng)絡(luò)進(jìn)行安全的數(shù)據(jù)傳輸。1.1SSL合同概述SSL是SecuresocketLayer英文縮寫,它的中文意思是安全套接層合同,指使用公鑰和私鑰技術(shù)組合的安全網(wǎng)絡(luò)通訊合同。SSL合同是網(wǎng)景公司(Netscape)推出的基于WEB應(yīng)用的安全合同,SSL合同指定了一種在應(yīng)用程序合同(如Http、Telenet、NMTP和FTP等)和TCP/IP合同之間提供數(shù)據(jù)安全性分層的機(jī)制,它為TCP/IP連接提供數(shù)據(jù)加密、服務(wù)器認(rèn)證、消息完整性以及可選的客戶機(jī)認(rèn)證,重要用于提高應(yīng)用程序之間數(shù)據(jù)的安全性,對(duì)傳送的數(shù)據(jù)進(jìn)行加密和隱藏,確保數(shù)據(jù)在傳送中不被變化,即確保數(shù)據(jù)的完整性。
SSL以對(duì)稱密碼技術(shù)和公開密碼技術(shù)相結(jié)合,能夠?qū)崿F(xiàn)以下三個(gè)通信目的:1.(秘密性:SSL客戶機(jī)和服務(wù)器之間傳送的數(shù)據(jù)都通過了加密解決,網(wǎng)絡(luò)中的非法竊聽者所獲取的信息都將是無意義的密文信息。2.完整性:SSL運(yùn)用密碼算法和散列(HASH)函數(shù),通過對(duì)傳輸信息特性值的提取來確保信息的完整性,確保要傳輸?shù)男畔⑷窟_(dá)成目的地,能夠避免服務(wù)器和客戶機(jī)之間的信息受到破壞。3.認(rèn)證性:運(yùn)用證書技術(shù)和可信的第三方認(rèn)證,能夠讓客戶機(jī)和服務(wù)器互相識(shí)別對(duì)方的身份。為了驗(yàn)證證書持有者是其正當(dāng)顧客(而不是冒名顧客),SSL規(guī)定證書持有者在握手時(shí)互相交換數(shù)字證書,通過驗(yàn)證來確保對(duì)方身份的正當(dāng)性。1.2SSL合同的體系構(gòu)造SSL合同位于TCP/IP合同模型的網(wǎng)絡(luò)層和應(yīng)用層之間,使用TCP來提供一種可靠的端到端的安全服務(wù),它是客戶/服務(wù)器應(yīng)用之間的通信不被攻擊竊聽,并且始終對(duì)服務(wù)器進(jìn)行認(rèn)證,還能夠選擇對(duì)客戶進(jìn)行認(rèn)證。SSL合同在應(yīng)用層通信之前就已經(jīng)完畢加密算法、通信密鑰的協(xié)商以及服務(wù)器認(rèn)證工作,在此之后,應(yīng)用層合同所傳送的數(shù)據(jù)都被加密。SSL事實(shí)上是共同工作的兩層合同構(gòu)成,如表1.1所示。從體系構(gòu)造圖能夠看出SSL安全合同實(shí)際是SSL握手合同、SSL修改密文合同、SSL警告合同和SSL統(tǒng)計(jì)合同構(gòu)成的一種合同族。握手合同修改密
文合同報(bào)警合同
SSL統(tǒng)計(jì)合同
TCP
IP
表1.1
SSL體系構(gòu)造
SSL統(tǒng)計(jì)合同為SSL連接提供了兩種服務(wù):一是機(jī)密性,二是消息完整性。為了實(shí)現(xiàn)這兩種服務(wù),SSL統(tǒng)計(jì)合同對(duì)接受的數(shù)據(jù)和被接受的數(shù)據(jù)工作過程是如何實(shí)現(xiàn)的呢?SSL統(tǒng)計(jì)合同接受傳輸?shù)膽?yīng)用報(bào)文,將數(shù)據(jù)分片成可管理的塊,進(jìn)行數(shù)據(jù)壓縮(可選),應(yīng)用MAC,接著運(yùn)用IDEA、DES、3DES或其它加密算法進(jìn)行數(shù)據(jù)加密,最后增加由內(nèi)容類型、重要版本、次要版本和壓縮長(zhǎng)度構(gòu)成的首部。被接受的數(shù)據(jù)剛好與接受數(shù)據(jù)工作過程相反,依次被解密、驗(yàn)證、解壓縮和重新裝配,然后交給更高級(jí)顧客。
SSL修改密文合同是使用SSL統(tǒng)計(jì)合同服務(wù)的SSL高層合同的3個(gè)特定合同之一,也是其中最簡(jiǎn)樸的一種。合同由單個(gè)消息構(gòu)成,該消息只包含一種值為1的單個(gè)字節(jié)。該消息的唯一作用就是使未決狀態(tài)拷貝為現(xiàn)在狀態(tài),更新用于現(xiàn)在連接的密碼組。為了保障SSL傳輸過程的安全性,雙方應(yīng)當(dāng)每隔一段時(shí)間變化加密規(guī)范。
SSL告警合同是用來為對(duì)等實(shí)體傳遞SSL的有關(guān)警告。如果在通信過程中某一方發(fā)現(xiàn)任何異常,就需要給對(duì)方發(fā)送一條警示消息通告。警示消息有兩種:一種是Fatal錯(cuò)誤,如傳遞數(shù)據(jù)過程中,發(fā)現(xiàn)錯(cuò)誤的MAC,雙方就需要立刻中斷會(huì)話,同時(shí)消除自己緩沖區(qū)對(duì)應(yīng)的會(huì)話統(tǒng)計(jì);第二種是Warning消息,這種狀況,通信雙方普通都只是統(tǒng)計(jì)日志,而對(duì)通信過程不造成任何影響。SSL握手合同能夠使得服務(wù)器和客戶能夠互相鑒別對(duì)方,協(xié)商具體的加密算法和MAC算法以及保密密鑰,用來保護(hù)在SSL統(tǒng)計(jì)中發(fā)送的數(shù)據(jù)。SSL握手合同允許通信實(shí)體在交換應(yīng)用數(shù)據(jù)之前協(xié)商密鑰的算法、加密密鑰和對(duì)客戶端進(jìn)行認(rèn)證(可選)的合同,為下一步統(tǒng)計(jì)合同要使用的密鑰信息進(jìn)行協(xié)商,使客戶端和服務(wù)器建立并保持安全通信的狀態(tài)信息。SSL握手合同是在任何應(yīng)用程序數(shù)據(jù)傳輸之前使用的。SSL握手合同包含四個(gè)階段:第一種階段建立安全能力;第二個(gè)階段服務(wù)器鑒別和密鑰交換;第三個(gè)階段客戶鑒別和密鑰交換;第四個(gè)階段完畢握手合同。2.SSL合同工作原理SSL合同處在互聯(lián)網(wǎng)多層合同集的傳輸層上,運(yùn)行在TCP/IP合同之上而在其它高層合同(如HTTP、Telnet、FTP和IMAP等)之下,如表2.1所示。在建立一次SSL連接之前,首先建立TCP/IP連接。SSL合同能夠讓應(yīng)用層合同透明地加以應(yīng)用。運(yùn)行時(shí),支持SSL合同的服務(wù)器能夠同一種支持SSL合同的客戶機(jī)彼此認(rèn)證自己,還允許這兩個(gè)機(jī)器之間建立安全的加密連接,同時(shí)確保信息在傳輸過程中的完整性。SSL合同能夠分為4個(gè)子合同:SSL握手合同、SSL更改密碼規(guī)程合同、SSL報(bào)警合同和SSL統(tǒng)計(jì)合同,其中最重要的兩個(gè)合同是握手合同和統(tǒng)計(jì)合同。SSL統(tǒng)計(jì)合同定義了數(shù)據(jù)傳送的格式,它位于某些可靠的傳輸層合同之上(如TCP),用于多個(gè)更高層合同的封裝。SSL握手合同位于SSL統(tǒng)計(jì)合同之上,并被SSL統(tǒng)計(jì)合同所封裝。它描述建立安全連接的過程,在客戶和服務(wù)器傳送應(yīng)用層數(shù)據(jù)之前,該合同允許服務(wù)器與客戶機(jī)之間協(xié)商加密算法和會(huì)話密鑰,完畢通信雙方的身份驗(yàn)證等功效。應(yīng)用層合同(HTTP、Telnet、FTP、IMAP等)SSL握手合同SSL更改密碼規(guī)程合同SSL報(bào)警合同SSL統(tǒng)計(jì)合同TCP合同IP合同表2.1SSL合同的分層構(gòu)造3.SSL統(tǒng)計(jì)合同SSL統(tǒng)計(jì)合同(RecordProtocol)定義了傳輸?shù)母袷剑婕敖y(tǒng)計(jì)頭和統(tǒng)計(jì)數(shù)據(jù)格式的規(guī)定。發(fā)送方統(tǒng)計(jì)層的工作過程如圖3.1所示:分片分片添加MAC壓縮加密添加SSL統(tǒng)計(jì)頭計(jì)算MAC圖3.1統(tǒng)計(jì)層的工作過程1.統(tǒng)計(jì)層從上層接受到任意大小的應(yīng)用層數(shù)據(jù)塊,把數(shù)據(jù)快分成不超出214字節(jié)的分片。2.統(tǒng)計(jì)層用現(xiàn)在的會(huì)話狀態(tài)中給出的壓縮算法靜分片壓縮成一種壓縮快,壓縮操作是可選的。3.每個(gè)會(huì)話都有對(duì)應(yīng)“加密規(guī)格”指定了對(duì)稱加密算法和MAC算法。統(tǒng)計(jì)層用指定的MAC算法對(duì)壓縮塊計(jì)算MAC,用指定的對(duì)稱加密算法加密壓縮塊和MAC,形成密文塊。4.對(duì)密文塊添加SSL統(tǒng)計(jì)頭,然后送到傳輸層,傳輸層受到這個(gè)SSL統(tǒng)計(jì)層數(shù)據(jù)單元后,記上TCP報(bào)頭,得到TCP數(shù)據(jù)包。MAC數(shù)據(jù)實(shí)際數(shù)據(jù)附加數(shù)據(jù)MAC數(shù)據(jù)實(shí)際數(shù)據(jù)附加數(shù)據(jù)圖3.2SSL統(tǒng)計(jì)合同中數(shù)據(jù)項(xiàng)的格式4.SSL握手合同客客戶機(jī)服務(wù)器server_hellocertificateserver_key_exchange*certificate_request*hello_donecertificate_verifyclient_key_exchangeCertificate*change_cipher_specfinishedcertificate_verify*finishedchange_cipher_specclient_hellono_certificate*Step1:擬定某些有關(guān)參數(shù),涉及合同版本、會(huì)話ID、加密規(guī)格、壓縮算法和初始隨機(jī)數(shù)Step2:服務(wù)器端發(fā)送本身證書(或臨時(shí)公鑰)及證書請(qǐng)求,最后發(fā)送hello階段結(jié)束信號(hào)。Step3:客戶端驗(yàn)證服務(wù)器端證書、發(fā)送本身證書、交換對(duì)稱密鑰。Step4:雙方擬定加密規(guī)格,結(jié)束握手合同。圖4.1SSL建立新會(huì)話時(shí)的握手過程建立新會(huì)話時(shí)的握手過程握手合同用于數(shù)據(jù)傳輸之前。它能夠進(jìn)行服務(wù)器與客戶之間的身份鑒別,同時(shí)通過服務(wù)器和客戶協(xié)商,決定采用的合同版本、加密算法,并擬定加密數(shù)據(jù)所需的對(duì)稱密鑰,隨即采用公鑰加密技術(shù)產(chǎn)生共享機(jī)密信息(例如對(duì)稱密鑰)。每次連接,握手合同都要建立一種會(huì)話。會(huì)話中包含了一套可在多次會(huì)話中使用的加密安全參數(shù),從而減輕了每次建立會(huì)話的負(fù)擔(dān)。然而,必須指出的是,SSL中的每次連接時(shí),在握手合同中產(chǎn)生的對(duì)稱密鑰都是獨(dú)特的,這種每次更換密鑰的辦法顯然在更大程度上確保了系統(tǒng)的不易攻破性。根據(jù)與否驗(yàn)證對(duì)方的證書,SSL的握手過程能夠分為下列三種驗(yàn)證模式:客戶和服務(wù)器都被驗(yàn)證;只驗(yàn)證客戶機(jī),不驗(yàn)證服務(wù)器,這是Internet上使用最廣泛的形式;客戶和服務(wù)器都不驗(yàn)證,也稱為完全匿名模式。SSL握手合同建立一種新的會(huì)話的過程如圖4.2所示,具體以下:階段1:擬定某些有關(guān)參數(shù),涉及合同版本、會(huì)話ID、加密規(guī)格、壓縮算法和初始隨機(jī)數(shù)客戶端發(fā)送client_hello消息給服務(wù)器,向服務(wù)器傳送客戶端支持的SSL合同的版本號(hào)、加密算法的種類、MAC算法的種類、會(huì)話標(biāo)記、密碼屬性(如hash塊的大?。约捌渌?wù)器和客戶端之間通信所需要的多個(gè)信息。服務(wù)器以server_hello向客戶應(yīng)答,服務(wù)器端傳選定的SSL合同的版本號(hào)、加密算法的種類、MAC算法的種類、密碼屬性及其它有關(guān)信息。階段2:服務(wù)器端發(fā)送本身證書(或臨時(shí)公鑰)及證書請(qǐng)求,最后發(fā)送hello階段結(jié)束信號(hào)。如果需要驗(yàn)證服務(wù)器,服務(wù)器將發(fā)送certificate消息。服務(wù)器首先建立一種隨機(jī)數(shù),然后對(duì)這個(gè)隨機(jī)數(shù)進(jìn)行數(shù)字簽名,將這個(gè)含有簽名的隨機(jī)數(shù)和服務(wù)器的證書,放在certificate消息中發(fā)送給客戶端。若不需要驗(yàn)證服務(wù)器證書,服務(wù)器發(fā)送包含其臨時(shí)公鑰的server_key_exchange消息。若服務(wù)器需要驗(yàn)證客戶,則發(fā)送certificate_request消息服務(wù)器發(fā)送hello_done消息,表達(dá)雙方握手過程中的hello階段結(jié)束。階段3:客戶端驗(yàn)證服務(wù)器端證書、發(fā)送本身證書、交換對(duì)稱密鑰。客戶運(yùn)用服務(wù)器傳過來的信息驗(yàn)證服務(wù)器的正當(dāng)性,發(fā)送certificate_verify消息,擬定驗(yàn)證通過。服務(wù)器的正當(dāng)性涉及:證書與否過期,發(fā)行服務(wù)器證書的CA與否可靠,發(fā)行者證書的公鑰能否對(duì)的解開服務(wù)器證書的“發(fā)行者的數(shù)字簽名”,服務(wù)器證書上的域名與否和服務(wù)器的實(shí)際域名相匹配。如果正當(dāng)性驗(yàn)證沒有通過,通信將斷開;如果正當(dāng)性驗(yàn)證通過,則將繼續(xù)進(jìn)行下一步??蛻舳讼入S機(jī)產(chǎn)生一種用于背面通信的預(yù)主密碼(pre-master-key),然后用服務(wù)器的公鑰(從服務(wù)器的證書中獲得)對(duì)其加密,再將加密后的預(yù)主密碼通過client_key_exchange消息傳給服務(wù)器。如果服務(wù)器規(guī)定客戶的身份認(rèn)證(在握手過程中為可選),客戶端會(huì)首先建立一種隨機(jī)數(shù),然后對(duì)這個(gè)隨機(jī)數(shù)進(jìn)行數(shù)字簽名,將這個(gè)含有簽名的隨機(jī)數(shù)和客戶自己的證書放在certificate消息中,發(fā)送給服務(wù)器端。如果客戶端沒有證書,則會(huì)回應(yīng)no_certificate告警。階段4:雙方擬定加密規(guī)格,結(jié)束握手合同??蛻舳讼蚍?wù)器端發(fā)出chenge_cipher_spec信息,指明背面的數(shù)據(jù)通信將“預(yù)主密碼”為對(duì)稱密鑰,同時(shí)向服務(wù)器發(fā)送finished消息,表達(dá)完畢了與服務(wù)器的握手。服務(wù)器檢查客戶證書和簽名隨機(jī)數(shù)的正當(dāng)性,發(fā)送certificate_verify消息。具體的正當(dāng)性驗(yàn)證涉及:客戶的證書使用日期與否有效,為客戶提供證書的CA與否可靠,發(fā)行CA的公鑰能否對(duì)的解開客戶證書的發(fā)行CA的數(shù)字簽名,檢查客戶的證書與否在證書撤銷列表(CRL)中。檢查如果沒有通過,則通信立刻中斷;如果驗(yàn)證通過,則服務(wù)器將用自己的私鑰解開加密的“預(yù)主密碼”,然后執(zhí)行一系列環(huán)節(jié)來產(chǎn)生通信使用的主密碼(master-key)(客戶端也將通過同樣的辦法產(chǎn)生相似的主密碼)。服務(wù)器向客戶端發(fā)出change_cipher_spec信息,指明背面的數(shù)據(jù)通信將使用預(yù)主密碼為對(duì)稱密鑰,同時(shí)發(fā)送finished消息,告知客戶端服務(wù)器端的握手過程結(jié)束。SSL的握手部分結(jié)束,SSL安全通道的數(shù)據(jù)通信開始,客戶和服務(wù)器開始使用相似的對(duì)稱密鑰進(jìn)行數(shù)據(jù)通信,同時(shí)進(jìn)行通信完整性的檢查。2)恢復(fù)一種已存在會(huì)話時(shí)的握手過程由上能夠看出,SSL合同的握手過程是非常好使的,為了減少握手過程的交互次數(shù),以及對(duì)網(wǎng)絡(luò)帶寬的占用,可將雙方通過完整握手過程建立起來的會(huì)話狀態(tài)統(tǒng)計(jì)下來。在后來連接時(shí),采用會(huì)話重用技術(shù)恢復(fù)會(huì)話過程,免去會(huì)話參數(shù)的協(xié)商。SSL握手合同恢復(fù)一種已存在的會(huì)話的過程如圖5-5所示??蛻舳税l(fā)送client_hello消息給服務(wù)器,其中的sessionid是要恢復(fù)的會(huì)話的標(biāo)記,服務(wù)器在會(huì)話緩存中檢查與否有這個(gè)會(huì)話標(biāo)記:若有,服務(wù)器將在對(duì)應(yīng)的會(huì)話狀態(tài)下建立一種新的連接,服務(wù)器發(fā)送含有sessionid的server_hello;若沒有,服務(wù)器會(huì)生成一種新的sessionid,建立一種新的會(huì)話過程。當(dāng)通過恢復(fù)一種會(huì)話建立一種連接時(shí),這個(gè)新的連接將繼承這個(gè)會(huì)話狀態(tài)下的壓縮算法、加密規(guī)格和預(yù)主密碼。但該連接會(huì)產(chǎn)生新的隨機(jī)數(shù)和通信密碼??涂蛻魴C(jī)服務(wù)器change_cipher_specfinishedfinishedchange_cipher_specserver_helloclient_helloStep2:更改加密規(guī)格,結(jié)束握手合同Step1:從會(huì)話緩存中恢復(fù)一種已經(jīng)存在的對(duì)話圖4.2SSL恢復(fù)一種已存在會(huì)話時(shí)的握手過程5.SSL合同的實(shí)現(xiàn)基于OpenSSL的程序能夠被分為兩個(gè)部分:客戶機(jī)和服務(wù)器,使用SSL合同使通信雙方能夠互相驗(yàn)證對(duì)方身份的真實(shí)性,并且能夠確保數(shù)據(jù)的完整性和機(jī)密性。建立SSL通信的過程如圖5.1所示。圖5.1
SSL通信過程SSL通信模型采用原則的C/S構(gòu)造,除了在TCP層上進(jìn)行傳輸之外,與普通的網(wǎng)絡(luò)通信合同沒有太大的區(qū)別,基于OpenSSL的程序都要遵照下列幾個(gè)環(huán)節(jié):5.1OpenSSL初始化在使用OpenSSL之前,必須進(jìn)行對(duì)應(yīng)的合同初始化工作,這能夠通過下面的函數(shù)實(shí)現(xiàn):intSSL_library_int(void);5.2選擇會(huì)話合同在運(yùn)用OpenSSL開始SSL會(huì)話之前,需要為客戶端和服務(wù)器制訂本次會(huì)話采用的合同,現(xiàn)在能夠使用的合同涉及TLSv1.0、SSLv2、SSLv3、SSLv2/v3。需要注意的是,客戶端和服務(wù)器必須使用互相兼容的合同,否則SSL會(huì)話將無法正常進(jìn)行。5.3創(chuàng)立會(huì)話環(huán)境在OpenSSL中創(chuàng)立的SSL會(huì)話環(huán)境稱為CTX,使用不同的合同會(huì)話,其環(huán)境也不同的。申請(qǐng)SSL會(huì)話環(huán)境的OpenSSL函數(shù)是:SSL_CTX*SSL_CTX_new(SSL_METHOD*method);當(dāng)SSL會(huì)話環(huán)境申請(qǐng)成功后,還要根據(jù)實(shí)際的需要設(shè)立CTX的屬性,普通的設(shè)立是指定SSL握手階段證書的驗(yàn)證方式和加載自己的證書。制訂證書驗(yàn)證方式的函數(shù)是:intSSL_CTX_set_verify(SSL_CTX*ctx,intmode,int(*verify_callback),int(X509_STORE_CTX*));為SSL會(huì)話環(huán)境加載CA證書的函數(shù)是:SSL_CTX_load_verify_location(SSL_CTX*ctx,constchar*Cafile,constchar*Capath);為SSL會(huì)話加載顧客證書的函數(shù)是:SSL_CTX_use_certificate_file(SSL_CTX*ctx,constchar*file,inttype);為SSL會(huì)話加載顧客私鑰的函數(shù)是:SSL_CTX_use_PrivateKey_file(SSL_CTX*ctx,constchar*file,inttype);在將證書和私鑰加載到SSL會(huì)話環(huán)境之后,就能夠調(diào)用下面的函數(shù)來驗(yàn)證私鑰和證書與否相符:intSSL_CTX_check_private_key(SSL_CTX*ctx);5.4建立SSL套接字SSL套接字是建立在普通的TCP套接字基礎(chǔ)之上,在建立SSL套接字時(shí)能夠使用下面的某些函數(shù):SSL*SSl_new(SSL_CTX*ctx);
//申請(qǐng)一種SSL套接字intSSL_set_fd(SSL*ssl,intfd);)
//綁定讀寫套接字intSSL_set_rfd(SSL*ssl,intfd);
//綁定只讀套接字intSSL_set_wfd(SSL*ssl,intfd);//綁定只寫套接字5.5完畢SSL握手在成功創(chuàng)立SSL套接字后,客戶端應(yīng)使用函數(shù)SSL_connect()替代傳統(tǒng)的函數(shù)connect()來完畢握手過程:intSSL_connect(SSL*ssl);而對(duì)服務(wù)器來講,則應(yīng)使用函數(shù)SSL_accept()替代傳統(tǒng)的函數(shù)accept()來完畢握手過程:intSSL_accept(SSL*ssl);握手過程完畢之后,普通需要詢問通信雙方的證書信息,方便進(jìn)行對(duì)應(yīng)的驗(yàn)證,這能夠借助于下面的函數(shù)來實(shí)現(xiàn):X509*SSL_get_peer_certificate(SSL*ssl);該函數(shù)能夠從SSL套接字中提取對(duì)方的證書信息,這些信息已經(jīng)被SSL驗(yàn)證過了。X509_NAME*X509_get_subject_name(X509*a);該函數(shù)得到證書所用者的名字。5.6進(jìn)行數(shù)據(jù)傳輸當(dāng)SSL握手完畢之后,就能夠進(jìn)行安全的數(shù)據(jù)傳輸了,在數(shù)據(jù)傳輸階段,需要使用SSL_read()和SSL_write()來替代傳統(tǒng)的read()和write()函數(shù),來完畢對(duì)套接字的讀寫操作:intSSL_read(SSL*ssl,void*buf,intnum);intSSL_write(SSL*ssl,constvoid*buf,intnum);5.7結(jié)束SSL通信當(dāng)客戶端和服務(wù)器之間的數(shù)據(jù)通信完畢之后,調(diào)用下面的函數(shù)來釋放已經(jīng)申請(qǐng)的SSL資源:intSSL_shutdown(SSL*ssl);
//關(guān)閉SSL套接字voidSSl_free(SSL*ssl);
//釋放SSL套接字voidSSL_CTX_free(SSL_CTX*ctx);
//釋放SSL會(huì)話環(huán)境6.SSL合同的缺點(diǎn)根據(jù)以上內(nèi)容可知,SSL合同所采用的加密算法和認(rèn)證算法使它含有一定的安全性,能夠在一定程度上抵抗某些攻擊。除此之外SSL合同含有很強(qiáng)的靈活性,在瀏覽器中大都建有SSL功效。但是SSL合同也有諸多缺點(diǎn),具體以下:6.1密鑰管理問題設(shè)計(jì)一種安全秘密的密鑰交換合同是很復(fù)雜的,因此,SSL握手合同中客戶機(jī)和服務(wù)器在互
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年個(gè)人留學(xué)貸款購房合同
- 2024年度企業(yè)環(huán)保解決方案提供合同
- 《基于知識(shí)工程的汽車轉(zhuǎn)向系統(tǒng)設(shè)計(jì)》
- 2024年冰箱租賃合同
- 《基于“泳褲供區(qū)”的旋髂淺動(dòng)脈穿支皮瓣游離修復(fù)四肢復(fù)雜創(chuàng)面的臨床應(yīng)用研究》
- 《JSKJ股份有限公司內(nèi)部控制問題研究》
- 《基于Z-score模型的龍光控股債券違約風(fēng)險(xiǎn)研究》
- 黃金卷03-2023年高考化學(xué)模擬卷(原卷版)2
- 2024年度xyz與789就區(qū)塊鏈供應(yīng)鏈管理的合同
- 2024年合肥客運(yùn)從業(yè)資格證考試試題及答案詳解
- 《新能源汽車概論》課件-6新能源汽車空調(diào)系統(tǒng)結(jié)構(gòu)及工作原理
- 2024年共青團(tuán)入團(tuán)考試題庫(附答案)
- 田徑運(yùn)動(dòng)會(huì)各種記錄表格
- 產(chǎn)科新生兒疫苗接種課件
- 企業(yè)信息管理概述課件
- 室外健身器材投標(biāo)方案(技術(shù)方案)
- 足浴店店長(zhǎng)聘用合同范本
- tubeless胸科手術(shù)麻醉
- 電商免責(zé)聲明范本
- 飛行科普知識(shí)講座
- 社區(qū)健康服務(wù)與管理教案
評(píng)論
0/150
提交評(píng)論