成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

使用SCEP為SSL提供證書服務(wù)

楊揚(yáng),馬躍北京郵電大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,北京(100876)E-mail :摘 要:SSL 作為目前流行的保障信息安全的協(xié)議,具有保密性、消息完整性和端點(diǎn)認(rèn)證等特性。本文使用SCEP 模塊為SS

楊揚(yáng),馬躍

北京郵電大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,北京(100876)

E-mail :

摘 要:SSL 作為目前流行的保障信息安全的協(xié)議,具有保密性、消息完整性和端點(diǎn)認(rèn)證等特性。本文使用SCEP 模塊為SSL 提供端點(diǎn)認(rèn)證的特性,它作為路由器上的一個(gè)模塊,向CA 服務(wù)器提出請(qǐng)求,為通信雙方提供身份認(rèn)證。

關(guān)鍵詞:SCEP ,SSL ,CA 服務(wù)器,CRL

中圖分類號(hào):TP393

1. 引言

SCEP [1](Simple Certificate Enrollment Protocol)是一種證書解決方案,目前廣泛應(yīng)用于PKI client和CA 實(shí)現(xiàn)。SCEP 中有三種實(shí)體:終端實(shí)體、數(shù)字證書認(rèn)證中心(CA )和審核授權(quán)部門(RA )。終端實(shí)體是指在證書的subject name域或者在X.509 V3[2]擴(kuò)展版本中subjectAltName 域中定義名字的實(shí)體。它的功能是產(chǎn)生一對(duì)非對(duì)稱RSA 密鑰,發(fā)起證書申請(qǐng)或者證書查詢請(qǐng)求。CA 是證書的頒發(fā)機(jī)構(gòu),是PKI 的核心,職責(zé)是接收終端用戶的申請(qǐng),決定是否為其頒發(fā)證書;處理證書的更新請(qǐng)求;處理證書的查詢請(qǐng)求;發(fā)布CRL 等。RA 協(xié)助CA 負(fù)責(zé)為已授權(quán)的證書申請(qǐng)者制作、發(fā)放和管理證書,在RA 存在的情況下,終端實(shí)體通過RA 提出證書申請(qǐng),此時(shí)終端實(shí)體除了獲得CA 自簽名證書外,還要獲得由CA 頒發(fā)的RA 證書。

SCEP 模塊模塊

SSL 模塊

TCP 模塊

圖1 SCEP模塊在路由器中的位置

在建立SSL 連接的過程中,有兩處需要提供證書服務(wù)。一處是SSL 服務(wù)器向客戶端發(fā)送證書來證明自己的身份時(shí),這就需要SSL 服務(wù)器擁有自己的數(shù)字證書;另外一處是如果SSL 服務(wù)器選擇了客戶端認(rèn)證,那么它在獲得客戶端證書時(shí)就需要認(rèn)證客戶端證書的可靠性。由于驗(yàn)證證書需要耗費(fèi)大量的時(shí)間,如果一個(gè)SSL 服務(wù)器同時(shí)為多個(gè)客戶端服務(wù),驗(yàn)證每個(gè)客戶端的證書將耗費(fèi)大量的服務(wù)器時(shí)間,降低了服務(wù)器的效率。因此,對(duì)客戶端身份的驗(yàn)證往往不使用證書,而是通過其他的方式完成,比如用戶名/口令等。所以本文只討論SCEP 為SSL 申請(qǐng)數(shù)字證書的情況,SCEP 模塊在系統(tǒng)中的位置可以用圖1表示。

2. 為SSL 服務(wù)器申請(qǐng)證書

SSL 連接中進(jìn)行服務(wù)器驗(yàn)證,首先要保證服務(wù)器擁有數(shù)字證書,申請(qǐng)證書的過程由SCEP 模塊完成,申請(qǐng)成功后將證書送至SSL 信箱,SSL 模塊可以將證書存儲(chǔ)在內(nèi)存中,啟動(dòng)SSL 模塊時(shí)自動(dòng)加載證書,而無需每次重新申請(qǐng)證書。

SCEP 在申請(qǐng)證書前需要具備以下兩個(gè)前提條件:具有一對(duì)RSA 密鑰;已知CA 服務(wù)器

- 1 -

,

圖2

網(wǎng)路拓?fù)浣Y(jié)構(gòu)圖

SCEP 在獲取數(shù)字證書之前,必須先獲得CA 服務(wù)器證書(若RA 存在,還需獲得RA 證書),而此時(shí)SCEP 和CA 之間沒有公鑰交換,不能進(jìn)行加密通信,因此使用HTTP 協(xié)議來獲得證書。獲取CA 服務(wù)器證書的過程可以用兩條消息完成:SCEP 請(qǐng)求者發(fā)送給CA 服務(wù)器的GetCACert [1]消息和CA 服務(wù)器返回的CertRep [1]消息,如圖3所示。

圖3 SCEP 請(qǐng)求CA 服務(wù)器的證書

2.1 GetCACert

路由器R 與myca 建立TCP 連接之后, SCEP發(fā)送HTTP GET:

一旦接收到CA 證書,SCEP 必須使用“指紋”[1]來驗(yàn)證證書是否可信?!爸讣y”是對(duì)整個(gè)

- 2 -

,

驗(yàn)證過CA 證書之后,SCEP 就可以為SSL 服務(wù)器注冊(cè)證書了。證書注冊(cè)過程由兩條消息構(gòu)成,一條是SCEP 發(fā)送給CA 服務(wù)器的PKCSReq [1]消息,另外一條是CA 服務(wù)器返回的CertRep [1]消息,如圖4所示。

圖4 SCEP 向CA 服務(wù)器請(qǐng)求CA 證書

2.1.1 PKCSReq消息

PKCSReq 消息的內(nèi)容是添加了簽名的PKCS 證書請(qǐng)求。PKCSReq 的生成過程(如圖5所示)如下:

1.終端實(shí)體(本文中是路由器R 上的SCEP 模塊)創(chuàng)建一個(gè)自簽名的證書,包括的主

題名、主題公鑰信息和屬性等信息,然后使用與主題公鑰相對(duì)應(yīng)的私鑰對(duì)證書請(qǐng)求進(jìn)行簽名,簽名后的證書請(qǐng)求組成了證書請(qǐng)求信封的信息部分。

2.使用隨機(jī)生成的內(nèi)容加密密鑰key 來加密這個(gè)PKCS #10證書請(qǐng)求,再把這個(gè)內(nèi)

容加密密鑰key 用用于加密的RA 密鑰加密后放在接收者信息域中,就形成了PKCS #7證書請(qǐng)求信封。

3.生成一個(gè)唯一的字符串作為操作ID 。此ID 標(biāo)識(shí)一個(gè)PKI 操作,在同一次PKI 操作

中,終端實(shí)體和CA 交換的信息中的操作ID 都是相同的。

4.生成一個(gè)16字節(jié)的隨機(jī)數(shù)作為SenderNonce ,防止重放攻擊。

5.使用選定的消息摘要算法計(jì)算添加信封后的PKCS 注冊(cè)請(qǐng)求的消息摘要。

6.在簽名數(shù)據(jù)中添加請(qǐng)求者的自簽名證書和簽名者信息。將操作ID 、SenderNonce 和

上一步產(chǎn)生的摘要組成鑒定屬性,用終端實(shí)體的私鑰簽名,添加到簽名數(shù)據(jù)中,就完成了SignedData 。

7.使用ContentInfo 指明這個(gè)SignedData 對(duì)象,就組成了完整的PKCSReq PKI消息。 SCEP 終端實(shí)體生成PKCSReq 消息之后,先后用DER 和Base64編碼方式編碼,假設(shè)編碼后的內(nèi)容是msg ,然后發(fā)送HTTP GET :

- 3 -

,

圖5 證書請(qǐng)求消息PKCSReq 的生成過程

2.1.2 CertRep

CA 服務(wù)器收到PKCSReq 消息之后,會(huì)驗(yàn)證請(qǐng)求者的身份,這里有兩種驗(yàn)證方式:手工驗(yàn)證和自動(dòng)驗(yàn)證。Windows2003服務(wù)器支持這兩種驗(yàn)證方式,可以在服務(wù)器中設(shè)置。先介紹一下人工驗(yàn)證方式,在CA 服務(wù)器管理員通過請(qǐng)求之前,證書請(qǐng)求信息會(huì)出現(xiàn)在CA 服務(wù)器的掛起請(qǐng)求列表中,并且CA 服務(wù)器會(huì)返回一個(gè)CertRep 消息返回給SCEP 。此時(shí)的CertRep 消息的pkiStatus 域?yàn)镻ENDING ,表示尚未通過管理員驗(yàn)證,此時(shí)登陸CA 服務(wù)器可以看到證書請(qǐng)求的狀態(tài),處在“掛起的申請(qǐng)”列表中,如圖6所示,申請(qǐng)ID 為4的證書請(qǐng)求出現(xiàn)在“掛起的請(qǐng)求列表中”:

圖6 尚未通過手工驗(yàn)證的證書請(qǐng)求的狀態(tài)

圖7 手工驗(yàn)證證書請(qǐng)求的過程

- 4 -

,

1.FAILURE 消息

此消息表示驗(yàn)證過程中出現(xiàn)了錯(cuò)誤,請(qǐng)求被拒絕,證書請(qǐng)求出現(xiàn)在“失敗的申請(qǐng)”列表中。此時(shí)消息中的失敗信息中會(huì)給出失敗原因,一般有以下幾種:

badAlg :使用了不能識(shí)別或者不支持的算法

badMessageCheck :對(duì)消息完整性的驗(yàn)證失敗

badrequest:不被允許或者不支持的交易

badTime :消息時(shí)間與系統(tǒng)時(shí)間不符

badCertId :找不到匹配的證書

2.SUCCESS 消息

若請(qǐng)求者通過了驗(yàn)證,則證書請(qǐng)求會(huì)出現(xiàn)在“頒發(fā)的證書”列表中,如圖8所示:

[1][1]

圖8 已經(jīng)通過CA 管理員驗(yàn)證的證書請(qǐng)求的狀態(tài)

圖9 CertRep消息的格式

從圖8可以看出,申請(qǐng)ID 為4的證書請(qǐng)求已經(jīng)移到了“頒發(fā)的證書”列表中。而此時(shí)SCEP 也會(huì)收到一個(gè)CertRep 消息,消息的信息部分就是一個(gè)包含所請(qǐng)求的證書的退化的PKCS #7數(shù)據(jù),此數(shù)據(jù)包括在PKCS #7信封中,除此之外還包括CA 服務(wù)器證書和簽名信息。證

- 5 - [4]

,

如果服務(wù)器使用自動(dòng)驗(yàn)證方式,則不會(huì)收到PENDING 類型的CertRep 消息,也無須周期性發(fā)送GetInitialCert 了。自動(dòng)驗(yàn)證是基于對(duì)pre-share secret的檢驗(yàn),pre-share secret是CA 服務(wù)器為每一個(gè)終端實(shí)體頒發(fā)的唯一的share secret,這個(gè)密鑰對(duì)應(yīng)該終端實(shí)體的注冊(cè)請(qǐng)求,只有該終端實(shí)體知道這個(gè)密鑰,當(dāng)終端實(shí)體提出注冊(cè)請(qǐng)求時(shí),要將這個(gè)密鑰填進(jìn)PKCS#10屬性域,再經(jīng)過PKCS #7的封裝,加密發(fā)送給CA 服務(wù)器。CA 服務(wù)器提取密鑰并與自己保存的密鑰進(jìn)行比較,從而鑒別終端實(shí)體的身份。

到目前為止,SCEP 已經(jīng)成功的從CA 證書服務(wù)器取得了一個(gè)證書,它將這個(gè)證書提取出來之后,發(fā)到SSL 信箱中,SSL 就可以直接使用,在Certificate 消息中發(fā)送這個(gè)證書。 [5]

3. SCEP提供的其他服務(wù)

SCEP 除了完成證書請(qǐng)求的功能外,還可以提出證書查詢,請(qǐng)求CRL ,下面簡(jiǎn)單地介紹一下這兩個(gè)功能。

3.1證書查詢

證書查詢[1]有兩個(gè)用途:有些客戶端沒有存儲(chǔ)證書的能力,這時(shí)CA 服務(wù)器會(huì)替客戶存儲(chǔ)這些證書,客戶需要時(shí)可以向CA 服務(wù)器提出證書查詢,查詢自己的證書;另外一個(gè)用途是客戶可以使用證書查詢功能來查詢其他客戶的證書。證書查詢有兩種方式:使用LDAP 協(xié)議存取或者向CA 服務(wù)器發(fā)送查詢請(qǐng)求,我們這里介紹第二種方式。查詢過程有兩條消息組成:GetCert 和CertRep 。GetCert 消息的構(gòu)成和GetCACert 消息的組成類似,只是此時(shí)GetCert 信封中被加密的內(nèi)容變成了要查詢的證書的頒發(fā)者和序列號(hào)(如圖10所示),這是因?yàn)樽C書使用其頒發(fā)者和序列號(hào)來唯一地標(biāo)識(shí)自己。在生成了GetCert 消息之后,再對(duì)其使用DER 和Base64編碼方式編碼,假設(shè)編碼后的內(nèi)容是msg ,使用HTTP GET:

摘要算法

數(shù)據(jù)類型標(biāo)識(shí)

用CA 公鑰加密后的key

加密算法

用key 加密的證書序列號(hào)和頒發(fā)者名字

終端實(shí)體證書

簽名信息 [2]

圖10 證書查詢消息GetCert 的格式

3.2 請(qǐng)求CRL

我們知道SSL 另外一個(gè)用到證書服務(wù)的地方是驗(yàn)證客戶端證書,雖然我們?cè)趯?shí)際應(yīng)用中沒有用到這個(gè)服務(wù),但SCEP 還是可以為SSL 提供這個(gè)服務(wù)的,這個(gè)功能的實(shí)現(xiàn)需要向CA 服務(wù)器請(qǐng)求CRL [1],如果客戶端證書出現(xiàn)在CRL 中,說明這個(gè)客戶端證書無效,可能證書過期或者用戶吊銷了證書,這是SSL 可以取消連接建立過程,否則,說明客戶端證書可

- 6 -

,

證書的Certificate 消息,這時(shí)SSL 服務(wù)器可以繼續(xù)建立連接或者取消連接返回失敗信息。 CRL 是由CA 發(fā)行者的名字和CA 證書序列號(hào)標(biāo)識(shí)的,因此在請(qǐng)求CRL 時(shí),必須提供這兩個(gè)信息。

SCEP 對(duì)CRL 的請(qǐng)求同樣通過兩條消息完成:GetCRL 消息和CertRep 。本文的環(huán)境中,若是請(qǐng)求CA 服務(wù)器test 的CRL ,則要在生成GetCRL 消息之后,使用HTTP GET http:/13.1.1.1/CertEnrolll/test.crl/發(fā)送CRL 請(qǐng)求(注意這里使用的HTTP GET與前面的有所不同)。這里的CertRep 消息返回的是撤銷證書列表[2],列表中的每項(xiàng)由用戶證書序列號(hào)和撤銷日期組成,其格式如圖11所示。

[5]

圖11 CRL 格式

4. 結(jié)論

本文以SSL 服務(wù)器獲取證書為例討論了SCEP 的一些功能,其實(shí)SCEP 還可以為其他需

要證書的模塊提供服務(wù),如IPSEC 等。SCEP 解決了建立安全通道時(shí)驗(yàn)證通信雙方身份的問題,使用PKCS #10、PKCS #7協(xié)議與數(shù)據(jù)加密和數(shù)字簽名相結(jié)合,從而在證書注冊(cè)和頒發(fā)證書時(shí),隱藏身份信息,抵抗中間人攻擊。

參考文獻(xiàn)

,

Yang Yang,Ma Yue

College of Computer Science & Technology,Beijing University of Posts and

Telecommunications ,Beijing (100876)

Abstract

SSL has characters of safety, message integrity and end authentication as a popular protocol ensuring information secure. This title uses SCEP module to offer end authentication for SSL, it is a module on router, send request to CA server, makes SSL server able to prove its identification.

Keywords :SCEP ,SSL ,CA Server,CRL

- 8 -

標(biāo)簽: