摘要:協(xié)議在應(yīng)用層協(xié)議通信之前就已經(jīng)完成加密算法通信密鑰的協(xié)商及服務(wù)器認(rèn)證工作。數(shù)據(jù)加密之后,只有密鑰要用一個(gè)安全的方法傳送。
博文參考
http://sweetpotato.blog.51cto.com/533893/1662061 http://www.cnblogs.com/jasperhsu/p/5107533.html http://www.178linux.com/77188安全機(jī)制
>安全的目標(biāo): 保密性:confidentiality 確保通信信息不被任何無關(guān)的人看到 完整性:integrity 實(shí)現(xiàn)通信雙方的報(bào)文不會(huì)產(chǎn)生信息丟失 數(shù)據(jù)完整性 系統(tǒng)完整性 可用性:availability 通信任何一方產(chǎn)生的信息應(yīng)當(dāng)對(duì)授權(quán)實(shí)體可用 >攻擊類型: 威脅保密性的攻擊:竊聽、通信量分析 威脅完整性的攻擊:更改、偽裝、重放、否認(rèn) 重放:攻擊者能截獲雙方通信的報(bào)文,并開始一遍遍發(fā)送 否認(rèn):通信的雙方的某一方發(fā)送的,下訂單說沒下 威脅可用性的攻擊:拒絕服務(wù)(DoS) >解決方案 技術(shù)(加密和解密) 加密和解密: 傳統(tǒng)加密方法:替代加密方法、置換加密方法 現(xiàn)代加密方法:現(xiàn)代塊加密方法 現(xiàn)代塊加密:把發(fā)送的整個(gè)數(shù)據(jù)切割固定成塊,每塊多帶帶加密,前后兩個(gè)塊建立關(guān)聯(lián)關(guān)系 服務(wù)(用于抵御攻擊的服務(wù),也即是為了上述安全目標(biāo)而特地設(shè)計(jì)的安全服務(wù)) >服務(wù): 認(rèn)證機(jī)制 訪問控制機(jī)制 密鑰算法和協(xié)議 對(duì)稱加密 公鑰加密 單向加密 認(rèn)證協(xié)議 加密數(shù)據(jù)依賴與算法和密鑰,安全性依賴于密鑰。因?yàn)樗惴ㄊ枪_的人人都可以得到,但是密鑰只有通信的主機(jī)才有 >Linux系統(tǒng)上述功能解決方案: OpenSSL(ssl):OpenSSL是ssl協(xié)議和加密庫(kù)的實(shí)現(xiàn) GPG(pgp):GPG是gpg協(xié)議的實(shí)現(xiàn)對(duì)稱加密
對(duì)稱加密(私鑰加密):加密和解密使用同一個(gè)密鑰 DES:Data Encryption Standard(數(shù)據(jù)加密標(biāo)準(zhǔn)) IBM實(shí)驗(yàn)室研發(fā);加密端64位明文產(chǎn)生64為密文,解密端64位密文還原64位明文,8個(gè)字節(jié)為一塊,加密和解密使用56位密鑰,DES使用16個(gè)迭代塊實(shí)現(xiàn),是現(xiàn)代加密算法 3DES: Triple DES(三重?cái)?shù)據(jù)加密標(biāo)準(zhǔn)) DES的增強(qiáng)版,比DES多3個(gè)數(shù)量級(jí) AES: Advanced Data Encryption Standard(高級(jí)數(shù)據(jù)加密標(biāo)準(zhǔn));(128bits, 192bits, 256bits, 384bits) AES算法欲取待3DES算法,支持128,192和256位密鑰長(zhǎng)度,有效的密鑰長(zhǎng)度可達(dá)上千位。AES算法采用了更為高效的編寫方法,對(duì)CPU的占用率較少,目前廣泛使用。 特性: 1.加密、解密使用同一個(gè)密鑰,效率高 2.將原始數(shù)據(jù)分割成固定大小的塊,逐個(gè)進(jìn)行加密 缺陷: 1.密鑰過多 2.密鑰分發(fā)困難 3.數(shù)據(jù)來源無法確認(rèn)非對(duì)稱加密
公鑰加密:密鑰是成對(duì)出現(xiàn) 公鑰(public key):從私鑰中提取產(chǎn)生,公開給所有人 私鑰(secret key):通過工具創(chuàng)建,自己留存,必須保證其私密性 特點(diǎn): 用公鑰加密的數(shù)據(jù),只有私鑰能解密,其保密性能到了保障;性能較差,用私鑰加密的數(shù)據(jù),只能用公鑰解密,任何人都何以獲得公鑰,可以確認(rèn)發(fā)送方身份(身份認(rèn)證) 功能: 數(shù)字簽名:主要在于讓接收方確認(rèn)發(fā)送方身份,完成身份驗(yàn)證 對(duì)稱密鑰交換:發(fā)送方用對(duì)方的公鑰加密一個(gè)對(duì)稱密鑰后發(fā)送給對(duì)方 數(shù)據(jù)加密:適合加密較小數(shù)據(jù) 缺點(diǎn): 密鑰長(zhǎng),加密解密效率低下 算法: RSA:只能實(shí)現(xiàn)簽名,加密和解密 DSA:只能加密,只能做數(shù)字簽名 ELGamal:商業(yè)算法 就算法本身的實(shí)現(xiàn)來講,公鑰加密技術(shù)比對(duì)稱加密技術(shù)的速度慢上差不多3個(gè)數(shù)量級(jí),一個(gè)數(shù)量級(jí)就是10倍,所以3個(gè)數(shù)量級(jí)不是30倍,而是1000倍。因此,在加密數(shù)據(jù)時(shí)是很少用到公鑰去加密的。 非對(duì)稱加密: 基于一對(duì)公鑰/密鑰對(duì) 用密鑰對(duì)中的一個(gè)加密,另一個(gè)解密 實(shí)現(xiàn)加密: 接收者 生成公鑰/密鑰對(duì):P和S 公開公鑰P,保密密鑰S 發(fā)送者 使用接收者的公鑰來加密消息M 將P(M)發(fā)送給接收者 接收者 使用密鑰S來解密:M=S(P(M) 實(shí)現(xiàn)數(shù)字簽名: 發(fā)送者 生成公鑰/密鑰對(duì):P和S 公開公鑰P,保密密鑰S 使用密鑰S 來加密消息M 發(fā)送給接收者S(M) 接收者 使用發(fā)送者的公鑰來解密M=P(S(M)) 結(jié)合簽名和加密 分離簽名單向加密
即提出數(shù)據(jù)指紋;只能加密,不能解密 特性: 定長(zhǎng)輸出:無論原來的數(shù)據(jù)是多大級(jí)別,其加密結(jié)果長(zhǎng)度一樣 雪崩效應(yīng):只要數(shù)據(jù)有一點(diǎn)不同,結(jié)果就會(huì)有巨大的不同 不可逆:不能通過特征碼還原數(shù)據(jù) 算法: md5:Message Digest 5, 128bits sha1(Secure Hash Algorithm安全散列算法):160bits,sha224,sha256,sha384,sha512 功能:確保數(shù)據(jù)完整性 如在一個(gè)網(wǎng)站下載軟件,為了驗(yàn)證軟件在下載過程中沒有被第三方修改,網(wǎng)站會(huì)提供一個(gè)MD5和軟件的特征碼,只要把MD5碼下載下來和我們下載的軟件進(jìn)行運(yùn)算就可以得到軟件的特征碼,只要這個(gè)特征碼和網(wǎng)站提供的一樣,說明軟件沒有被修改,如果不一樣,百分之百是被修改了。秘鑰交換
密鑰交換:IKE(Internet Key Exchange) 公鑰加密:通過非對(duì)稱加密算法,加密對(duì)稱加密算法的密鑰,在用對(duì)稱加密算法實(shí)際要傳輸?shù)臄?shù)據(jù) DH (Deffie-Hellman) :生成會(huì)話密鑰 前提發(fā)送方和接受方協(xié)商使用同一個(gè)大素?cái)?shù)p和生成數(shù)g,各自產(chǎn)生的隨機(jī)數(shù)X和Y。發(fā)送方將g的X次方mod P產(chǎn)生的數(shù)值發(fā)送給接收方,接受方將g的Y次方mod P產(chǎn)生的數(shù)值發(fā)送給發(fā)送方,發(fā)送方再對(duì)接收的結(jié)果做X次方運(yùn)算,接受方對(duì)接收的結(jié)果做Y次方運(yùn)算,最終密碼形成,密鑰交換完成。 DH: A: p,g B: p,g A: 生成隱私數(shù)據(jù) ? (x安全協(xié)議
SSL: Secure Socket Layer 功能:機(jī)密性,認(rèn)證,完整性,重放保護(hù) 兩階段協(xié)議,分為握手階段和應(yīng)用階段 握手階段(協(xié)商階段): 客戶端和服務(wù)器端認(rèn)證對(duì)方身份(依賴于PKI體系,利用數(shù)字證書進(jìn)行身份認(rèn)證),并協(xié)商通信中使用的安全參數(shù)、密碼套件以及主密鑰。 后續(xù)通信使用的所有密鑰都是通過MasterSecret 生成。 應(yīng)用階段:在握手階段完成后進(jìn)入,在應(yīng)用階段通信雙方使用握手階段協(xié)商好的密鑰進(jìn)行安全通信。 分層設(shè)計(jì): 1、最底層:基礎(chǔ)算法原語(yǔ)的實(shí)現(xiàn),aes, rsa, md5 2、向上一層:各種算法的實(shí)現(xiàn) 3、再向上一層:組合算法實(shí)現(xiàn)的半成品 4、用各種組件拼裝而成的各種成品密碼學(xué)協(xié)議軟件SSL/TLSSSL:Secure sockets Layer 版本:V1.0, V2.0, V3.0 TLS:transport layer Security 版本:V1.0, V1.1, V1.2, V1.3 SSL(Secure Sockets Layer,安全套接層),及其繼任者TLS(Transport Layer Security,傳輸層安全)是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議。TLS與SSL在傳輸層對(duì)網(wǎng)絡(luò)連接進(jìn)行加密。 Handshake協(xié)議:包括協(xié)商安全參數(shù)和密碼套件、服務(wù)器身份認(rèn)證(客戶端身份認(rèn)證可選)、密鑰交換 ChangeCipherSpec協(xié)議:一條消息表明握手協(xié)議已經(jīng)完成Alert協(xié)議:對(duì)握手協(xié)議中一些異常的錯(cuò)誤提醒,分為fatal和warning 兩個(gè)級(jí)別,fatal 類型錯(cuò)誤會(huì)直接中斷SSL 鏈接,而warning級(jí)別的錯(cuò)誤SSL鏈接仍可繼續(xù),只是會(huì)給出錯(cuò)誤警告 Record協(xié)議:包括對(duì)消息的分段、壓縮、消息認(rèn)證和完整性保護(hù)、加密等 HTTPS協(xié)議:就是“HTTP 協(xié)議”和“SSL/TLS 協(xié)議”的組合。HTTP over SSL” 或“HTTP over TLS”,對(duì)http 協(xié)議的文本數(shù)據(jù)進(jìn)行加密處理后,成為二進(jìn)制形式傳輸OpenSSLOpenSSL由三部分組成:libencrypto庫(kù),libssl庫(kù),openssl多用途命令行工具。 OpenSSL是網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議,囊括了主要的密碼算法、常用的密鑰和證書封裝管理功能以及SSL協(xié)議,并提供了豐富的應(yīng)用程序供測(cè)試或其它目的使用。 OpenSSL是一個(gè)強(qiáng)大的安全套接字層密碼庫(kù),Apache使用它加密HTTPS,OpenSSH使用它加密SSH,它還是一個(gè)多用途的、跨平臺(tái)的密碼工具。 SSL是Secure Sockets Layer(安全套接層協(xié)議)的縮寫,可以在Internet上提供秘密性傳輸。Netscape公司在推出第一個(gè)Web瀏覽器的同時(shí),提出了SSL協(xié)議標(biāo)準(zhǔn)。其目標(biāo)是保證兩個(gè)應(yīng)用間通信的保密性和可靠性,可在服務(wù)器端和用戶端同時(shí)實(shí)現(xiàn)支持。已成為Internet上保密通訊的工業(yè)標(biāo)準(zhǔn)。安全套接層協(xié)議能使用戶/服務(wù)器應(yīng)用之間的通信不被攻擊者竊聽,并且始終對(duì)服務(wù)器進(jìn)行認(rèn)證,還可選擇對(duì)用戶進(jìn)行認(rèn)證。 SSL協(xié)議要求建立在可靠的傳輸層協(xié)議(TCP)之上。SSL協(xié)議的優(yōu)勢(shì)在于它是與應(yīng)用層協(xié)議獨(dú)立無關(guān)的,高層的應(yīng)用層協(xié)議(例如:HTTP,F(xiàn)TP,TELNET等)能透明地建立于SSL協(xié)議之上。 SSL協(xié)議在應(yīng)用層協(xié)議通信之前就已經(jīng)完成加密算法、通信密鑰的協(xié)商及服務(wù)器認(rèn)證工作。在此之后應(yīng)用層協(xié)議所傳送的數(shù)據(jù)都會(huì)被加密,從而保證通信的私密性。 通過以上敘述,SSL協(xié)議提供的安全信道有以下三個(gè)特性: 1、數(shù)據(jù)的保密性信息加密就是把明碼的輸入文件用加密算法轉(zhuǎn)換成加密的文件以實(shí)現(xiàn)數(shù)據(jù)的保密。加密的過程需要用到密鑰來加密數(shù)據(jù)然后再解密。沒有了密鑰,就無法解開加密的數(shù)據(jù)。數(shù)據(jù)加密之后,只有密鑰要用一個(gè)安全的方法傳送。加密過的數(shù)據(jù)可以公開地傳送。 2、數(shù)據(jù)的完整性加密也能保證數(shù)據(jù)的一致性。例如:消息驗(yàn)證碼(MAC),能夠校驗(yàn)用戶提供的加密信息,接收者可以用MAC來校驗(yàn)加密數(shù)據(jù),保證數(shù)據(jù)在傳輸過程中沒有被篡改過。 3、安全驗(yàn)證加密的另外一個(gè)用途是用來作為個(gè)人的標(biāo)識(shí),用戶的密鑰可以作為他的安全驗(yàn)證的標(biāo)識(shí)。SSL是利用公開密鑰的加密技術(shù)(RSA)來作為用戶端與服務(wù)器端在傳送機(jī)密資料時(shí)的加密通訊協(xié)定。 基本功能: OpenSSL整個(gè)軟件包大概可以分成三個(gè)主要的功能部分:密碼算法庫(kù)、SSL協(xié)議庫(kù)以及應(yīng)用程序。OpenSSL的目錄結(jié)構(gòu)自然也是圍繞這三個(gè)功能部分進(jìn)行規(guī)劃的。 作為一個(gè)基于密碼學(xué)的安全開發(fā)包,OpenSSL提供的功能相當(dāng)強(qiáng)大和全面,囊括了主要的密碼算法、常用的密鑰和證書封裝管理功能以及SSL協(xié)議,并提供了豐富的應(yīng)用程序供測(cè)試或其它目的使用。 OpenSSL的應(yīng)用程序已經(jīng)成為了OpenSSL重要的一個(gè)組成部分。如OpenCA,就是完全使用OpenSSL的應(yīng)用程序?qū)崿F(xiàn)的。OpenSSL的應(yīng)用程序是基于OpenSSL的密碼算法庫(kù)和SSL協(xié)議庫(kù)寫成的。 OpenSSL的應(yīng)用程序主要包括密鑰生成、證書管理、格式轉(zhuǎn)換、數(shù)據(jù)加密和簽名、SSL測(cè)試以及其它輔助配置功能。 輔助功能: BIO機(jī)制是OpenSSL提供的一種高層IO接口,該接口封裝了幾乎所有類型的IO接口,如內(nèi)存訪問、文件訪問以及Socket等。這使得代碼的重用性大幅度提高,OpenSSL提供API的復(fù)雜性也降低了很多。 OpenSSL對(duì)于隨機(jī)數(shù)的生成和管理也提供了一整套的解決方法和支持API函數(shù)。隨機(jī)數(shù)的好壞是決定一個(gè)密鑰是否安全的重要前提。 OpenSSL還提供了其它的一些輔助功能,如從口令生成密鑰的API,證書簽發(fā)和管理中的配置文件機(jī)制等等。 特點(diǎn): OpenSSL采用C語(yǔ)言作為開發(fā)語(yǔ)言,這使得OpenSSL具有優(yōu)秀的跨平臺(tái)性能,這對(duì)于廣大技術(shù)人員來說是一件非常美妙的事情,可以在不同的平臺(tái)使用同樣熟悉的東西。OpenSSL支持Linux、Windows、BSD、Mac、VMS等平臺(tái),這使得OpenSSL具有廣泛的適用性。 (1)在通信之前,服務(wù)器端通過加密算法生成一對(duì)密鑰,并把其公鑰發(fā)給CA申請(qǐng)數(shù)字證書。 (2)CA審核后,結(jié)合服務(wù)端發(fā)來的相關(guān)信息生成數(shù)字證書,并把該數(shù)字證書發(fā)回給服務(wù)器端。 (3)客戶端和服務(wù)器端經(jīng)tcp三次握手,建立初步連接。 (4)客戶端發(fā)送http報(bào)文請(qǐng)求并協(xié)商使用哪種加密算法。 (5)服務(wù)端響應(yīng)報(bào)文并把自身的數(shù)字簽名發(fā)給服務(wù)端。 (6)客服端下載CA的公鑰,驗(yàn)證其數(shù)字證書的擁有者是否是服務(wù)器端(這個(gè)過程可以得到服務(wù)器端的公鑰)。(一般是客戶端驗(yàn)證服務(wù)端的身份,服務(wù)端不用驗(yàn)證客戶端的身份。) (7)如果驗(yàn)證通過,客戶端生成一個(gè)隨機(jī)對(duì)稱密鑰,用該密鑰加密要發(fā)送的URL鏈接申請(qǐng),再用服務(wù)器端的公鑰加密該密鑰. (8)把加密的密鑰和加密的URL鏈接一起發(fā)送到服務(wù)器。 (9)服務(wù)器端使用自身的私鑰解密,獲得一個(gè)對(duì)稱密鑰,再用該對(duì)稱密鑰解密經(jīng)加密的URL鏈接,獲得URL鏈接申請(qǐng)。 (10)服務(wù)器端根據(jù)獲得的URL鏈接取得該鏈接的網(wǎng)頁(yè),并用客戶端發(fā)來的對(duì)稱密鑰把該網(wǎng)頁(yè)加密后發(fā)給客戶端。 (11)客戶端收到加密的網(wǎng)頁(yè),用自身的對(duì)稱密鑰解密,就能獲得網(wǎng)頁(yè)的內(nèi)容了。 (12)TCP四次揮手,通信結(jié)束。以上可概括為: 客戶端向服務(wù)器端索要并驗(yàn)證證書 雙方協(xié)商生成“會(huì)話秘鑰” 雙方采用“會(huì)話秘鑰”并進(jìn)行加密通信 第一階段: 支持的協(xié)議版本,如tls1.2 客戶端生成一個(gè)隨機(jī)數(shù),稍后用戶會(huì)生成“會(huì)話密匙” 支持的加密算法,如AES 3DES RSA 支持的壓縮算法 第二階段: 確認(rèn)使用的加密通信協(xié)議版本,如tls1.2 服務(wù)器端生成一個(gè)隨機(jī)數(shù),稍后用于生成“會(huì)話密匙” 確認(rèn)使用的加密算法 服務(wù)器證書 第三階段: 驗(yàn)證服務(wù)器證書,在確認(rèn)無誤后取其公鑰(發(fā)證機(jī)構(gòu) 證書完整性 證書持有者 證書有效期 吊銷列表) 發(fā)送以下信息給服務(wù)器端 一個(gè)隨機(jī)數(shù) 編碼變更通知,表示隨后的信息都將用雙方商定的加密方法和密鑰發(fā)送 客戶端握手結(jié)束通知 第四階段: 收到客戶端發(fā)來的第三個(gè)隨機(jī)數(shù)后,計(jì)算生成本次會(huì)話所有的“會(huì)話密匙” 向客戶端發(fā)送如下信息 編碼變更通知,表示隨后的信息都將用雙方商定的加密方法和密鑰發(fā)送 服務(wù)端握手結(jié)束通知OpenSSLy開源項(xiàng)目三個(gè)組件: openssl:多用途的命令行工具,包openssl libcrypto:加密算法庫(kù),包openssl-libs libssl:加密模塊應(yīng)用庫(kù),實(shí)現(xiàn)了ssl及tls,包nss openssl 命令: 兩種運(yùn)行模式:交互模式和批處理模式 openssl version :程序版本號(hào) 標(biāo)準(zhǔn)命令、消息摘要命令、加密命令 標(biāo)準(zhǔn)命令:enc, ca, req, … 對(duì)稱加密: 工具:openssl enc, gpg 算法:3des, aes, blowfish, twofish加密解密加密:openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
-out the output filename, standard output by default. (默認(rèn)輸出文件名)
單向加密解密:openssl enc -d -des3 -a -salt -in testfile.cipher -out testfile
工具:md5sum, sha1sum, sha224sum,sha256sum… openssl dgst dgst命令: openssl dgst -md5 [-hex 默認(rèn)] /PATH/SOMEFILE openssl dgst -md5 testfile md5sum /PATH/TO/SOMEFILE生成用戶密碼openssl passwd -1 -salt SALT(最多8 位) openssl passwd -1 -salt centos生成隨機(jī)數(shù)openssl rand -base64 | -hex NUM NUM: 表示字節(jié)數(shù);-hex 時(shí),每個(gè)字符為十六進(jìn)制,相當(dāng)于4位二進(jìn)制,出現(xiàn)的字符數(shù)為NUM*2 -base64 Perform base64 encoding on the output. (進(jìn)行base64編碼輸出) -hex Show the output as a hex string. (將輸出顯示為十六進(jìn)制字符串)公鑰加密算法:RSA, ELGamal 工具:gpg, openssl rsautl(man rsautl) 數(shù)字簽名: 算法:RSA, DSA, ELGamal 密鑰交換: 算法:dh DSA: Digital Signature Algorithm (數(shù)字信號(hào)運(yùn)算法則) DSS:Digital Signature Standard (數(shù)字簽名標(biāo)準(zhǔn)) RSA:生成私鑰從私鑰中提取出公鑰openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS(umask 077; openssl genrsa -out test.key -des 2048)
隨機(jī)數(shù)生成器:偽隨機(jī)數(shù)字openssl rsa -in PRIVATEKEYFILE -pubout -out PUBLICKEYFILE
Openssl rsa -in test.key -pubout -out test.key.pub
CA和證書/dev/random:僅從熵池返回隨機(jī)數(shù);隨機(jī)數(shù)用盡,阻塞
/dev/urandom:從熵池返回隨機(jī)數(shù);隨機(jī)數(shù)用盡,會(huì)利用軟件生成偽隨機(jī)數(shù),非阻塞
PKI: Public Key Infrastructure(公鑰基礎(chǔ)設(shè)施)
是一種遵循既定標(biāo)準(zhǔn)的秘鑰管理平臺(tái),它能夠?yàn)樗芯W(wǎng)絡(luò)應(yīng)用提供加密和數(shù)字簽名等密碼服務(wù)及所必須的密鑰和證書管理體系,PKI就是利用公鑰理論和技術(shù)建立的提供安全服務(wù)的基礎(chǔ)設(shè)施。PKI技術(shù)是信息安全技術(shù)的核心,也是電子商務(wù)的關(guān)鍵和基礎(chǔ)技術(shù)。 完整的PKI系統(tǒng)必須具有權(quán)威認(rèn)證機(jī)構(gòu)(CA)、數(shù)字證書庫(kù)、密鑰備份及恢復(fù)系統(tǒng)、證書作廢系統(tǒng)、應(yīng)用接口(API)等基本構(gòu)成部分,構(gòu)建PKI也將圍繞著這五大系統(tǒng)來著手構(gòu)建。 PKI的基礎(chǔ)技術(shù)包括加密,數(shù)字簽名,數(shù)據(jù)完整機(jī)制,數(shù)字信封,雙重?cái)?shù)字簽名等。 簽證機(jī)構(gòu):CA (Certification Authority) 用戶在注冊(cè)機(jī)構(gòu)注冊(cè)證書,CA就會(huì)簽發(fā)用戶的公鑰認(rèn)證,并且和申請(qǐng)者的信息綁定在一起并且簽名后,以證書形式發(fā)給申請(qǐng)者,然后在本地的證書存取庫(kù)備份。 注冊(cè)機(jī)構(gòu):RA (Registration Authority) 一般用戶都是在這里注冊(cè)證書。 證書吊銷列表:CRL (Certificate Revocation List) 如果用戶私鑰丟失,必須要申請(qǐng)吊銷證書,否則可能會(huì)被別人冒名頂替。 證書存取庫(kù): 所有發(fā)出的證書都會(huì)在這里存一份,如果丟失證書可以在這里得到,如果丟失私鑰那么只能申請(qǐng)證書撤銷。X.509 :定義了證書的結(jié)構(gòu)以及認(rèn)證協(xié)議標(biāo)準(zhǔn)版本號(hào):標(biāo)識(shí)證書的版本 序列號(hào):標(biāo)識(shí)證書的唯一證書,類似于身份證 簽名算法ID:證書的算法標(biāo)識(shí) 發(fā)行者名稱:證書頒發(fā)這的可識(shí)別名 有效期限:證書有效的時(shí)間段 主體名稱:證書擁有著的可識(shí)別名 主體公鑰:關(guān)鍵部分 發(fā)行者的唯一標(biāo)識(shí):證書頒發(fā)者的唯一標(biāo)識(shí)符 主體的唯一標(biāo)識(shí):證書擁有者的唯一標(biāo)識(shí)符 擴(kuò)展信息 發(fā)行者的簽名:證書頒發(fā)者對(duì)證書的簽名,上述整個(gè)內(nèi)容做單向加密,得到的特征碼用自己私鑰加密,并附加到后面,用來生產(chǎn)發(fā)行者的簽名證書獲取證書類型: 證書授權(quán)機(jī)構(gòu)的證書 服務(wù)器 用戶證書 獲取證書兩種方法: 使用證書授權(quán)機(jī)構(gòu) 生成簽名請(qǐng)求(csr) 將csr 發(fā)送給CA 從CA 處接收簽名 自簽名的證書 自已簽發(fā)自己的公鑰搭建CA和申請(qǐng)證書 1.創(chuàng)建私有CA:在確定配置為CA的服務(wù)上生成一個(gè)自簽證書,并為CA提供所需要的目錄及文件即可
三種策略:
匹配:申請(qǐng)?zhí)顚懙男畔⒈仨毢虲A設(shè)置信息一致
支持:必須填寫這項(xiàng)申請(qǐng)信息
可選:可寫可不寫
自簽證書,生成私鑰
生成自簽名證書
-new:生成新證書簽署請(qǐng)求 -x509:生成自簽格式證書,專用于創(chuàng)建私有CA時(shí) -key:生成請(qǐng)求時(shí)用到的私有文件路徑 -out:生成的請(qǐng)求文件路徑;如果自簽操作將直接生成簽署過的證書 -days:證書的有效時(shí)長(zhǎng),單位是天 (不寫默認(rèn)為365天)[root@www ~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365 You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter ".", the field will be left blank. ----- Country Name (2 letter code) [XX]:CN #國(guó)家 State or Province Name (full name) []:HeNan #省份 Locality Name (eg, city) [Default City]:ZZ #城市 Organization Name (eg, company) [Default Company Ltd]:dalong.com #公司 Organizational Unit Name (eg, section) []:Ops #部門 Common Name (eg, your name or your server"s hostname) []:CA.dalong.com #個(gè)人或主機(jī)名 Email Address []: #郵箱地址 [root@www ~]# ll /etc/pki/CA/cacert.pem #生成的自簽證書 -rw-r--r--. 1 root root 964 Jul 16 17:57 /etc/pki/CA/cacert.pem為CA提供所需的文件
[root@localhost /etc/pki/CA]#touch index.txt 生成證書索引數(shù)據(jù)庫(kù)文件 [root@localhost /etc/pki/CA]#echo 01 > /etc/pki/CA/serial 制定第一個(gè)頒發(fā)證書的序列號(hào)要用到證書進(jìn)行安全通信的服務(wù)器,需要向CA請(qǐng)求簽署證書
(以httpd為例) [root@localhost /etc/pki/CA]#yum install httpd -y [root@localhost ~]#vim /var/www/html/index.html Test Page [root@localhost ~]#systemctl start httpd.service [root@localhost ~]#ss -tnl LISTEN 0 128 :::80 :::* [root@localhost ~]#mkdir /web/ssl -pv (用來保存證書和私鑰)生成私鑰[root@localhost /web/ssl]#(umask 0077;openssl genrsa -out httpd_ key.pem) Generating RSA private key, 1024 bit long modulus ..........................++++++ ......................++++++ e is 65537 (0x10001)生成證書簽署請(qǐng)求[root@localhost /web/ssl]#openssl req -new -key httpd_key.pem -out httpd.csr Country Name (2 letter code) [XX]:CN State or Province Name (full name) []:BeiJing Locality Name (eg, city) [Default City]:BeiJing Organization Name (eg, company) [Default Company Ltd]:Tencent Organizational Unit Name (eg, section) []:Ops Common Name (eg, your name or your server"s hostname) []:www.tencent.com Email Address []:[email protected] 注意:默認(rèn)國(guó)家,省,公司名稱三項(xiàng)必須和CA一致 Please enter the following "extra" attributes 可輸入以下額外屬性(可省略) to be sent with your certificate request A challenge password []: An optional company name []:將請(qǐng)求通過可靠方式發(fā)送給CA主機(jī) 在CA主機(jī)上簽署證書[root@localhost /web/ssl]#openssl ca -in httpd.csr -out httpd.crt Certificate is to be certified until May 29 14:04:18 2018 GMT (365 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated[root@localhost ~]#yum -y install mod_ssl [root@localhost ~]#vim /etc/httpd/conf.d/ssl.conf吊銷證書客戶端獲取要吊銷的證書的serial(在使用證書的主機(jī)執(zhí)行)
[root@localhost ~]#openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subjectCA主機(jī)吊銷證書
先根據(jù)客戶提交的serial和subject信息,對(duì)比其與本機(jī)數(shù)據(jù)庫(kù)index.txt中存儲(chǔ)的是否一致
吊銷
[root@localhost ~]#openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem其中的SERIAL要換成證書真正的序列號(hào);生成吊銷證書的吊銷編號(hào)(第一次吊銷證書時(shí)執(zhí)行)
[root@localhost ~]#echo 01 > /etc/pki/CA/crlnumber更新證書吊銷列表
[root@localhost ~]## openssl ca -gencrl -out thisca.crl
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/35837.html
摘要:所謂對(duì)稱加密,就是加密和解密使用同一秘鑰,這也是這種加密算法最顯著的缺點(diǎn)之一。非對(duì)稱加密算法由于對(duì)稱加密在通信加密領(lǐng)域的缺陷,年和提出了非對(duì)稱加密的概念。非對(duì)稱加密,其主要缺點(diǎn)之一就是慢,適合加密少量數(shù)據(jù)。 1. 加密的目的 加密不同于密碼,加密是一個(gè)動(dòng)作或者過程,其目的就是將一段明文信息(人類或機(jī)器可以直接讀懂的信息)變?yōu)橐欢慰瓷先]有任何意義的字符,必須通過事先約定的解密規(guī)則才能將...
摘要:所謂對(duì)稱加密,就是加密和解密使用同一秘鑰,這也是這種加密算法最顯著的缺點(diǎn)之一。非對(duì)稱加密算法由于對(duì)稱加密在通信加密領(lǐng)域的缺陷,年和提出了非對(duì)稱加密的概念。非對(duì)稱加密,其主要缺點(diǎn)之一就是慢,適合加密少量數(shù)據(jù)。 1. 加密的目的 加密不同于密碼,加密是一個(gè)動(dòng)作或者過程,其目的就是將一段明文信息(人類或機(jī)器可以直接讀懂的信息)變?yōu)橐欢慰瓷先]有任何意義的字符,必須通過事先約定的解密規(guī)則才能將...
閱讀 3691·2021-09-22 15:28
閱讀 1305·2021-09-03 10:35
閱讀 888·2021-09-02 15:21
閱讀 3490·2019-08-30 15:53
閱讀 3503·2019-08-29 17:25
閱讀 579·2019-08-29 13:22
閱讀 1566·2019-08-28 18:15
閱讀 2296·2019-08-26 13:57