數(shù)字證書原理

轉(zhuǎn)自作者無恙:數(shù)字證書原理(http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html)

文中首先解釋了加密解密的一些基礎(chǔ)知識和概念,然后通過一個加密通信過程的例子說明了加密算法的作用垦梆,以及數(shù)字證書的出現(xiàn)所起的作用序宦。接著對數(shù)字證書做一個詳細(xì)的解釋,并討論一下windows中數(shù)字證書的管理笆凌,最后演示使用makecert生成數(shù)字證書。如果發(fā)現(xiàn)文中有錯誤的地方,或者有什么地方說得不夠清楚馋没,歡迎指出呀潭!

1钉迷、基礎(chǔ)知識
這部分內(nèi)容主要解釋一些概念和術(shù)語,最好是先理解這部分內(nèi)容钠署。
1.1糠聪、公鑰密碼體制(public-key cryptography)
公鑰密碼體制分為三個部分,公鑰谐鼎、私鑰舰蟆、加密解密算法,它的加密解密過程如下:
加密:通過加密算法和公鑰對內(nèi)容(或者說明文)進(jìn)行加密狸棍,得到密文身害。加密過程需要用到公鑰。
解密:通過解密算法和私鑰對密文進(jìn)行解密草戈,得到明文塌鸯。解密過程需要用到解密算法和私鑰。注意唐片,由公鑰加密的內(nèi)容丙猬,只能由私鑰進(jìn)行解密涨颜,也就是說,由公鑰加密的內(nèi)容茧球,如果不知道私鑰庭瑰,是無法解密的。

公鑰密碼體制的公鑰和算法都是公開的(這是為什么叫公鑰密碼體制的原因)袜腥,私鑰是保密的见擦。大家都以使用公鑰進(jìn)行加密,但是只有私鑰的持有者才能解密羹令。在實際的使用中鲤屡,有需要的人會生成一對公鑰和私鑰,把公鑰發(fā)布出去給別人使用福侈,自己保留私鑰酒来。

1.2、對稱加密算法(symmetric key algorithms)
在對稱加密算法中肪凛,加密使用的密鑰和解密使用的密鑰是相同的堰汉。也就是說,加密和解密都是使用的同一個密鑰伟墙。因此對稱加密算法要保證安全性的話翘鸭,密鑰要做好保密,只能讓使用的人知道戳葵,不能對外公開就乓。這個和上面的公鑰密碼體制有所不同,公鑰密碼體制中加密是用公鑰拱烁,解密使用私鑰生蚁,而對稱加密算法中,加密和解密都是使用同一個密鑰戏自,不區(qū)分公鑰和私鑰邦投。

    // 密鑰,一般就是一個字符串或數(shù)字擅笔,在加密或者解密時傳遞給加密/解密算法志衣。前面在公鑰密碼體制中說到的公鑰、私鑰就是密鑰猛们,公鑰是加密使用的密鑰念脯,私鑰是解密使用的密鑰。

1.3阅懦、非對稱加密算法(asymmetric key algorithms)
在非對稱加密算法中和二,加密使用的密鑰和解密使用的密鑰是不相同的徘铝。前面所說的公鑰密碼體制就是一種非對稱加密算法耳胎,他的公鑰和是私鑰是不能相同的惯吕,也就是說加密使用的密鑰和解密使用的密鑰不同,因此它是一個非對稱加密算法怕午。

1.4废登、RSA簡介
RSA是一種公鑰密碼體制,現(xiàn)在使用得很廣泛郁惜。如果對RSA本身有興趣的堡距,后面看我有沒有時間寫個RSA的具體介紹。
RSA密碼體制是一種公鑰密碼體制兆蕉,公鑰公開羽戒,私鑰保密,它的加密解密算法是公開的虎韵。 由公鑰加密的內(nèi)容可以并且只能由私鑰進(jìn)行解密易稠,并且由私鑰加密的內(nèi)容可以并且只能由公鑰進(jìn)行解密。也就是說包蓝,RSA的這一對公鑰驶社、私鑰都可以用來加密和解密,并且一方加密的內(nèi)容可以由并且只能由對方進(jìn)行解密测萎。

1.5亡电、簽名和加密
我們說加密,是指對某個內(nèi)容加密硅瞧,加密后的內(nèi)容還可以通過解密進(jìn)行還原份乒。 比如我們把一封郵件進(jìn)行加密,加密后的內(nèi)容在網(wǎng)絡(luò)上進(jìn)行傳輸零酪,接收者在收到后冒嫡,通過解密可以還原郵件的真實內(nèi)容。
這里主要解釋一下簽名四苇,簽名就是在信息的后面再加上一段內(nèi)容孝凌,可以證明信息沒有被修改過,怎么樣可以達(dá)到這個效果呢月腋?一般是對信息做一個hash計算得到一個hash值蟀架,注意,這個過程是不可逆的榆骚,也就是說無法通過hash值得出原來的信息內(nèi)容片拍。在把信息發(fā)送出去時,把這個hash值加密后做為一個簽名和信息一起發(fā)出去妓肢。 接收方在收到信息后捌省,會重新計算信息的hash值,并和信息所附帶的hash值(解密后)進(jìn)行對比碉钠,如果一致纲缓,就說明信息的內(nèi)容沒有被修改過卷拘,因為這里hash計算可以保證不同的內(nèi)容一定會得到不同的hash值,所以只要內(nèi)容一被修改祝高,根據(jù)信息內(nèi)容計算的hash值就會變化栗弟。當(dāng)然,不懷好意的人也可以修改信息內(nèi)容的同時也修改hash值工闺,從而讓它們可以相匹配乍赫,為了防止這種情況,hash值一般都會加密后(也就是簽名)再和信息一起發(fā)送陆蟆,以保證這個hash值不被修改雷厂。至于如何讓別人可以解密這個簽名软驰,這個過程涉及到數(shù)字證書等概念稠集,我們后面在說到數(shù)字證書時再詳細(xì)說明嘉汰,這里您先只需先理解簽名的這個概念拌消。

2溶其、一個加密通信過程的演化
我們來看一個例子妖滔,現(xiàn)在假設(shè)“服務(wù)器”和“客戶”要在網(wǎng)絡(luò)上通信谨设,并且他們打算使用RSA(參看前面的RSA簡介)來對通信進(jìn)行加密以保證談話內(nèi)容的安全苛萎。由于是使用RSA這種公鑰密碼體制诊县,“服務(wù)器”需要對外發(fā)布公鑰(算法不需要公布讲弄,RSA的算法大家都知道),自己留著私鑰依痊”艹“客戶”通過某些途徑拿到了“服務(wù)器”發(fā)布的公鑰,客戶并不知道私鑰胸嘁∑堪冢“客戶”具體是通過什么途徑獲取公鑰的,我們后面再來說明性宏,下面看一下雙方如何進(jìn)行保密的通信:

2.1 第一回合:

“客戶”->“服務(wù)器”:你好
“服務(wù)器”->“客戶”:你好群井,我是服務(wù)器
“客戶”->“服務(wù)器”:?毫胜?书斜??

因為消息是在網(wǎng)絡(luò)上傳輸?shù)慕褪梗腥丝梢悦俺渥约菏恰胺?wù)器”來向客戶發(fā)送信息荐吉。例如上面的消息可以被黑客截獲如下:

“客戶”->“服務(wù)器”:你好
“服務(wù)器”->“客戶”:你好,我是服務(wù)器
**“客戶”->“黑客”:你好**        // 黑客在“客戶”和“服務(wù)器”之間的某個路由器上截獲“客戶”發(fā)給服務(wù)器的信息口渔,然后自己冒充“服務(wù)器”
**“黑客”->“客戶”:你好样屠,我是服務(wù)器**

因此“客戶”在接到消息后,并不能肯定這個消息就是由“服務(wù)器”發(fā)出的,某些“黑客”也可以冒充“服務(wù)器”發(fā)出這個消息痪欲。如何確定信息是由“服務(wù)器”發(fā)過來的呢混巧?有一個解決方法,因為只有服務(wù)器有私鑰勤揩,所以如果只要能夠確認(rèn)對方有私鑰,那么對方就是“服務(wù)器”秘蛔。因此通信過程可以改進(jìn)為如下:

2.2 第二回合:

“客戶”->“服務(wù)器”:你好
“服務(wù)器”->“客戶”:你好陨亡,我是服務(wù)器
“客戶”->“服務(wù)器”:向我證明你就是服務(wù)器
“服務(wù)器”->“客戶”:你好,我是服務(wù)器 {你好深员,我是服務(wù)器}[私鑰|RSA]
  //注意這里約定一下负蠕,{} 表示RSA加密后的內(nèi)容,[ | ]表示用什么密鑰和算法進(jìn)行加密倦畅,后面的示例中都用這種表示方式遮糖,例如上面的** {你好,我是服務(wù)器}[私鑰|RSA]**  就表示用私鑰對**“你好叠赐,我是服務(wù)器”**進(jìn)行加密后的結(jié)果欲账。**

為了向“客戶”證明自己是“服務(wù)器”, “服務(wù)器”把一個字符串用自己的私鑰加密芭概,把明文和加密后的密文一起發(fā)給“客戶”赛不。對于這里的例子來說,就是把字符串 “你好罢洲,我是服務(wù)器”和這個字符串用私鑰加密后的內(nèi)容 {你好踢故,我是服務(wù)器}[私鑰|RSA] 發(fā)給客戶。
“客戶”收到信息后惹苗,她用自己持有的公鑰解密密文殿较,和明文進(jìn)行對比,如果一致桩蓉,說明信息的確是由服務(wù)器發(fā)過來的淋纲。也就是說“客戶”把 {你好,我是服務(wù)器}[私鑰|RSA] 這個內(nèi)容用公鑰進(jìn)行解密院究,然后和“你好帚戳,我是服務(wù)器”對比。因為由“服務(wù)器”用私鑰加密后的內(nèi)容儡首,由并且只能由公鑰進(jìn)行解密片任,私鑰只有“服務(wù)器”持有,所以如果解密出來的內(nèi)容是能夠?qū)Φ蒙系氖呖瑁钦f明信息一定是從“服務(wù)器”發(fā)過來的对供。
假設(shè)“黑客”想冒充“服務(wù)器”:

“黑客”->“客戶”:你好,我是服務(wù)器
“客戶”->“黑客”:向我證明你就是服務(wù)器
“黑客”->“客戶”:你好,我是服務(wù)器 {你好产场,我是服務(wù)器}[鹅髓??京景?|RSA] //這里黑客無法冒充窿冯,因為他不知道私鑰,無法用私鑰加密某個字符串后發(fā)送給客戶去驗證确徙。
“客戶”->“黑客”:醒串??鄙皇?芜赌?
由于“黑客”沒有“服務(wù)器”的私鑰,因此它發(fā)送過去的內(nèi)容伴逸,“客戶”是無法通過服務(wù)器的公鑰解密的缠沈,因此可以認(rèn)定對方是個冒牌貨!
到這里為止错蝴,“客戶”就可以確認(rèn)“服務(wù)器”的身份了洲愤,可以放心和“服務(wù)器”進(jìn)行通信,但是這里有一個問題顷锰,通信的內(nèi)容在網(wǎng)絡(luò)上還是無法保密禽篱。為什么無法保密呢?通信過程不是可以用公鑰馍惹、私鑰加密嗎躺率?其實用RSA的私鑰和公鑰是不行的,我們來具體分析下過程万矾,看下面的演示:

2.3 第三回合:

“客戶”->“服務(wù)器”:你好
“服務(wù)器”->“客戶”:你好悼吱,我是服務(wù)器
“客戶”->“服務(wù)器”:向我證明你就是服務(wù)器
“服務(wù)器”->“客戶”:你好,我是服務(wù)器 {你好良狈,我是服務(wù)器}[私鑰|RSA]
“客戶”->“服務(wù)器”:{我的帳號是aaa后添,密碼是123,把我的余額的信息發(fā)給我看看}[公鑰|RSA]
“服務(wù)器”->“客戶”:{你的余額是100元}[私鑰|RSA]

注意上面的的信息 {你的余額是100元}[私鑰]薪丁,這個是“服務(wù)器”用私鑰加密后的內(nèi)容遇西,但是我們之前說了,公鑰是發(fā)布出去的严嗜,因此所有的人都知道公鑰粱檀,所以除了“客戶”,其它的人也可以用公鑰對{你的余額是100元}[私鑰]進(jìn)行解密漫玄。所以如果“服務(wù)器”用私鑰加密發(fā)給“客戶”茄蚯,這個信息是無法保密的压彭,因為只要有公鑰就可以解密這內(nèi)容。然而“服務(wù)器”也不能用公鑰對發(fā)送的內(nèi)容進(jìn)行加密渗常,因為“客戶”沒有私鑰壮不,發(fā)送個“客戶”也解密不了。

這樣問題就又來了皱碘,那又如何解決呢询一?在實際的應(yīng)用過程,一般是通過引入對稱加密來解決這個問題癌椿,看下面的演示:

2.4 第四回合:

“客戶”->“服務(wù)器”:你好
“服務(wù)器”->“客戶”:你好健蕊,我是服務(wù)器
“客戶”->“服務(wù)器”:向我證明你就是服務(wù)器
“服務(wù)器”->“客戶”:你好,我是服務(wù)器 {你好如失,我是服務(wù)器}[私鑰|RSA]
“客戶”->“服務(wù)器”:{我們后面的通信過程,用對稱加密來進(jìn)行送粱,這里是對稱加密算法和密鑰}[公鑰|RSA]    //藍(lán)色字體的部分是對稱加密的算法和密鑰的具體內(nèi)容褪贵,客戶把它們發(fā)送給服務(wù)器。
“服務(wù)器”->“客戶”:{OK抗俄,收到脆丁!}[密鑰|對稱加密算法]
“客戶”->“服務(wù)器”:{我的帳號是aaa,密碼是123动雹,把我的余額的信息發(fā)給我看看}[密鑰|對稱加密算法]
“服務(wù)器”->“客戶”:{你的余額是100元}[密鑰|對稱加密算法]

// 在上面的通信過程中槽卫,“客戶”在確認(rèn)了“服務(wù)器”的身份后,“客戶”自己選擇一個對稱加密算法和一個密鑰胰蝠,把這個對稱加密算法和密鑰一起用公鑰加密后發(fā)送給“服務(wù)器”歼培。注意,由于對稱加密算法和密鑰是用公鑰加密的茸塞,就算這個加密后的內(nèi)容被“黑客”截獲了躲庄,由于沒有私鑰,“黑客”也無從知道對稱加密算法和密鑰的內(nèi)容钾虐。
由于是用公鑰加密的噪窘,只有私鑰能夠解密,這樣就可以保證只有服務(wù)器可以知道對稱加密算法和密鑰效扫,而其它人不可能知道(這個對稱加密算法和密鑰是“客戶”自己選擇的倔监,所以“客戶”自己當(dāng)然知道如何解密加密)。這樣“服務(wù)器”和“客戶”就可以用對稱加密算法和密鑰來加密通信的內(nèi)容了菌仁。

總結(jié)一下浩习,RSA加密算法在這個通信過程中所起到的作用主要有兩個:

因為私鑰只有“服務(wù)器”擁有,因此“客戶”可以通過判斷對方是否有私鑰來判斷對方是否是“服務(wù)器”济丘。
客戶端通過RSA的掩護(hù)瘦锹,安全的和服務(wù)器商量好一個對稱加密算法和密鑰來保證后面通信過程內(nèi)容的安全

如果這里您理解了為什么不用RSA去加密通信過程,而是要再確定一個對稱加密算法來保證通信過程的安全,那么就說明前面的內(nèi)容您已經(jīng)理解了弯院。(如果不清楚辱士,再看下2.3和2.4,如果還是不清楚听绳,那應(yīng)該是我們說清楚颂碘,您可以留言提問。)
到這里椅挣,“客戶”就可以確認(rèn)“服務(wù)器”的身份头岔,并且雙方的通信內(nèi)容可以進(jìn)行加密,其他人就算截獲了通信內(nèi)容鼠证,也無法解密峡竣。的確,好像通信的過程是比較安全了量九。

但是這里還留有一個問題适掰,在最開始我們就說過,“服務(wù)器”要對外發(fā)布公鑰荠列,那“服務(wù)器”如何把公鑰發(fā)送給“客戶”呢类浪?我們第一反應(yīng)可能會想到以下的兩個方法:

a)把公鑰放到互聯(lián)網(wǎng)的某個地方的一個下載地址,事先給“客戶”去下載肌似。
b)每次和“客戶”開始通信時费就,“服務(wù)器”把公鑰發(fā)給“客戶”。

但是這個兩個方法都有一定的問題川队,

對于a)方法力细,

“客戶”無法確定這個下載地址是不是“服務(wù)器”發(fā)布的,你憑什么就相信這個地址下載的東西就是“服務(wù)器”發(fā)布的而不是別人偽造的呢固额,萬一下載到一個假的怎么辦艳汽?另外要所有的“客戶”都在通信前事先去下載公鑰也很不現(xiàn)實。

對于b)方法对雪,

因為任何人都可以自己生成一對公鑰和私鑰河狐,他只要向“客戶”發(fā)送他自己的私鑰就可以冒充“服務(wù)器”了。示意如下:

“客戶”->“黑客”:你好           //黑客截獲“客戶”發(fā)給“服務(wù)器”的消息
“黑客”->“客戶”:你好瑟捣,我是服務(wù)器馋艺,這個是我的公鑰    //黑客自己生成一對公鑰和私鑰,把公鑰發(fā)給“客戶”迈套,自己保留私鑰
“客戶”->“黑客”:向我證明你就是服務(wù)器
“黑客”->“客戶”:你好捐祠,我是服務(wù)器 {你好,我是服務(wù)器}[黑客自己的私鑰|RSA]  

 客戶收到“黑客”用私鑰加密的信息后桑李,是可以用“黑客”發(fā)給自己的公鑰解密的踱蛀,從而會誤認(rèn)為“黑客”是“服務(wù)器”

因此“黑客”只需要自己生成一對公鑰和私鑰窿给,然后把公鑰發(fā)送給“客戶”,自己保留私鑰率拒,這樣由于“客戶”可以用黑客的公鑰解密黑客的私鑰加密的內(nèi)容崩泡,“客戶”就會相信“黑客”是“服務(wù)器”,從而導(dǎo)致了安全問題猬膨。**這里問題的根源就在于角撞,大家都可以生成公鑰、私鑰對勃痴,無法確認(rèn)公鑰對到底是誰的谒所。 **如果能夠確定公鑰到底是誰的,就不會有這個問題了沛申。例如劣领,如果收到“黑客”冒充“服務(wù)器”發(fā)過來的公鑰,經(jīng)過某種檢查铁材,如果能夠發(fā)現(xiàn)這個公鑰不是“服務(wù)器”的就好了尖淘。
為了解決這個問題,數(shù)字證書出現(xiàn)了衫贬,它可以解決我們上面的問題德澈。先大概看下什么是數(shù)字證書歇攻,一個證書包含下面的具體內(nèi)容:

證書的發(fā)布機(jī)構(gòu)
證書的有效期
公鑰
證書所有者(Subject)
簽名所使用的算法
指紋以及指紋算法

證書的內(nèi)容的詳細(xì)解釋會在后面詳細(xì)解釋固惯,這里先只需要搞清楚一點,數(shù)字證書可以保證數(shù)字證書里的公鑰確實是這個證書的所有者(Subject)的缴守,或者證書可以用來確認(rèn)對方的身份葬毫。也就是說,我們拿到一個數(shù)字證書屡穗,我們可以判斷出這個數(shù)字證書到底是誰的贴捡。至于是如何判斷的,后面會在詳細(xì)討論數(shù)字證書時詳細(xì)解釋〈迳埃現(xiàn)在把前面的通信過程使用數(shù)字證書修改為如下:

2.5 第五回合:

“客戶”->“服務(wù)器”:你好
“服務(wù)器”->“客戶”:你好烂斋,我是服務(wù)器,這里是我的數(shù)字證書        //這里用證書代替了公鑰
“客戶”->“服務(wù)器”:向我證明你就是服務(wù)器
“服務(wù)器”->“客戶”:你好础废,我是服務(wù)器 {你好汛骂,我是服務(wù)器}[私鑰|RSA]

注意,上面第二次通信评腺,“服務(wù)器”把自己的證書發(fā)給了“客戶”帘瞭,而不是發(fā)送公鑰≥锛ィ“客戶”可以根據(jù)證書校驗這個證書到底是不是“服務(wù)器”的蝶念,也就是能校驗這個證書的所有者是不是“服務(wù)器”抛腕,從而確認(rèn)這個證書中的公鑰的確是“服務(wù)器”的。后面的過程和以前是一樣媒殉,“客戶”讓“服務(wù)器”證明自己的身份担敌,“服務(wù)器”用私鑰加密一段內(nèi)容連同明文一起發(fā)給“客戶”,“客戶”把加密內(nèi)容用數(shù)字證書中的公鑰解密后和明文對比适袜,如果一致柄错,那么對方就確實是“服務(wù)器”,然后雙方協(xié)商一個對稱加密來保證通信過程的安全苦酱。到這里售貌,整個過程就完整了,我們回顧一下:

2.6 完整過程:

step1: “客戶”向服務(wù)端發(fā)送一個通信請求
“客戶”->“服務(wù)器”:你好
  
step2: “服務(wù)器”向客戶發(fā)送自己的數(shù)字證書疫萤。證書中有一個公鑰用來加密信息颂跨,私鑰由“服務(wù)器”持有
“服務(wù)器”->“客戶”:你好,我是服務(wù)器扯饶,這里是我的數(shù)字證書 
 
step3: “客戶”收到“服務(wù)器”的證書后恒削,它會去驗證這個數(shù)字證書到底是不是“服務(wù)器”的,數(shù)字證書有沒有什么問題尾序,數(shù)字證書如果檢查沒有問題钓丰,就說明數(shù)字證書中的公鑰確實是“服務(wù)器”的。檢查數(shù)字證書后每币,“客戶”會發(fā)送一個隨機(jī)的字符串給“服務(wù)器”用私鑰去加密携丁,服務(wù)器把加密的結(jié)果返回給“客戶”,“客戶”用公鑰解密這個返回結(jié)果兰怠,如果解密結(jié)果與之前生成的隨機(jī)字符串一致梦鉴,那說明對方確實是私鑰的持有者,或者說對方確實是“服務(wù)器”揭保。
“客戶”->“服務(wù)器”:向我證明你就是服務(wù)器肥橙,這是一個隨機(jī)字符串     //前面的例子中為了方便解釋,用的是“你好”等內(nèi)容秸侣,實際情況下一般是隨機(jī)生成的一個字符串存筏。
“服務(wù)器”->“客戶”:{一個隨機(jī)字符串}[私鑰|RSA]
 
step4: 驗證“服務(wù)器”的身份后,“客戶”生成一個對稱加密算法和密鑰味榛,用于后面的通信的加密和解密椭坚。這個對稱加密算法和密鑰,“客戶”會用公鑰加密后發(fā)送給“服務(wù)器”励负,別人截獲了也沒用藕溅,因為只有“服務(wù)器”手中有可以解密的私鑰。這樣继榆,后面“服務(wù)器”和“客戶”就都可以用對稱加密算法來加密和解密通信內(nèi)容了巾表。
“服務(wù)器”->“客戶”:{OK汁掠,已經(jīng)收到你發(fā)來的對稱加密算法和密鑰!有什么可以幫到你的集币?}[密鑰|對稱加密算法]
“客戶”->“服務(wù)器”:{我的帳號是aaa考阱,密碼是123,把我的余額的信息發(fā)給我看看}[密鑰|對稱加密算法]
“服務(wù)器”->“客戶”:{你好鞠苟,你的余額是100元}[密鑰|對稱加密算法]
…… //繼續(xù)其它的通信

2.7 其它問題:
上面的過程已經(jīng)十分接近HTTPS的真實通信過程了乞榨,完全可以按照這個過程去理解HTTPS的工作原理。但是我為了方便解釋当娱,上面有些細(xì)節(jié)沒有說到吃既,有興趣的人可以看下這部分的內(nèi)容】缦福可以跳過不看鹦倚,無關(guān)緊要。

【問題1】
上面的通信過程中說到冀惭,在檢查完證書后震叙,“客戶”發(fā)送一個隨機(jī)的字符串給“服務(wù)器”去用私鑰加密,以便判斷對方是否真的持有私鑰散休。但是有一個問題媒楼,“黑客”也可以發(fā)送一個字符串給“服務(wù)器”去加密并且得到加密后的內(nèi)容,這樣對于“服務(wù)器”來說是不安全的戚丸,因為黑客可以發(fā)送一些簡單的有規(guī)律的字符串給“服務(wù)器”加密划址,從而尋找加密的規(guī)律,有可能威脅到私鑰的安全昏滴。所以說猴鲫,“服務(wù)器”隨隨便便用私鑰去加密一個來路不明的字符串并把結(jié)果發(fā)送給對方是不安全的对人。
〖解決方法〗

每次收到“客戶”發(fā)來的要加密的的字符串時谣殊,“服務(wù)器”并不是真正的加密這個字符串本身,而是把這個字符串進(jìn)行一個hash計算牺弄,加密這個字符串的hash值(不加密原來的字符串)后發(fā)送給“客戶”姻几,“客戶”收到后解密這個hash值并自己計算字符串的hash值然后進(jìn)行對比是否一致。也就是說势告,“服務(wù)器”不直接加密收到的字符串蛇捌,而是加密這個字符串的一個hash值,這樣就避免了加密那些有規(guī)律的字符串咱台,從而降低被破解的機(jī)率络拌。“客戶”自己發(fā)送的字符串回溺,因此它自己可以計算字符串的hash值春贸,然后再把“服務(wù)器”發(fā)送過來的加密的hash值和自己計算的進(jìn)行對比混萝,同樣也能確定對方是否是“服務(wù)器”。

【問題2】
在雙方的通信過程中萍恕,“黑客”可以截獲發(fā)送的加密了的內(nèi)容逸嘀,雖然他無法解密這個內(nèi)容,但是他可以搗亂允粤,例如把信息原封不動的發(fā)送多次崭倘,擾亂通信過程。
〖解決方法〗

可以給通信的內(nèi)容加上一個序號或者一個隨機(jī)的值类垫,如果“客戶”或者“服務(wù)器”接收到的信息中有之前出現(xiàn)過的序號或者隨機(jī)值司光,那么說明有人在通信過程中重發(fā)信息內(nèi)容進(jìn)行搗亂,雙方會立刻停止通信悉患。有人可能會問飘庄,如果有人一直這么搗亂怎么辦?那不是無法通信了购撼? 答案是的確是這樣的跪削,例如有人控制了你連接互聯(lián)網(wǎng)的路由器,他的確可以針對你迂求。但是一些重要的應(yīng)用碾盐,例如軍隊或者政府的內(nèi)部網(wǎng)絡(luò),它們都不使用我們平時使用的公網(wǎng)揩局,因此一般人不會破壞到他們的通信毫玖。 

【問題3】
在雙方的通信過程中,“黑客”除了簡單的重復(fù)發(fā)送截獲的消息之外凌盯,還可以修改截獲后的密文修改后再發(fā)送付枫,因為修改的是密文,雖然不能完全控制消息解密后的內(nèi)容驰怎,但是仍然會破壞解密后的密文阐滩。因此發(fā)送過程如果黑客對密文進(jìn)行了修改,“客戶”和“服務(wù)器”是無法判斷密文是否被修改的县忌。雖然不一定能達(dá)到目的掂榔,但是“黑客”可以一直這樣碰碰運氣。
〖解決方法〗

在每次發(fā)送信息時症杏,先對信息的內(nèi)容進(jìn)行一個hash計算得出一個hash值装获,將信息的內(nèi)容和這個hash值一起加密后發(fā)送。接收方在收到后進(jìn)行解密得到明文的內(nèi)容和hash值厉颤,然后接收方再自己對收到信息內(nèi)容做一次hash計算穴豫,與收到的hash值進(jìn)行對比看是否匹配,如果匹配就說明信息在傳輸過程中沒有被修改過逼友。如果不匹配說明中途有人故意對加密數(shù)據(jù)進(jìn)行了修改精肃,立刻中斷通話過程后做其它處理潘鲫。
  1. 證書的構(gòu)成和原理
    3.1 證書的構(gòu)成和原理
    之前已經(jīng)大概說了一個證書由什么構(gòu)成,但是沒有仔細(xì)進(jìn)行介紹肋杖,這里對證書的內(nèi)容做一個詳細(xì)的介紹溉仑。先看下一個證書到底是個什么東西,在windows下查看一個證書時状植,界面是這樣的浊竟,我們主要關(guān)注一下Details Tab頁,其中的內(nèi)容比較長津畸,我滾動內(nèi)容后后抓了三個圖振定,把完整的信息顯示出來:
    certificateDetails

    里面的內(nèi)容比較多——Version、Serial number肉拓、Signature algorithm 等等后频,挑幾個重要的解釋一下。

◆Issuer (證書的發(fā)布機(jī)構(gòu))
指出是什么機(jī)構(gòu)發(fā)布的這個證書暖途,也就是指明這個證書是哪個公司創(chuàng)建的(只是創(chuàng)建證書卑惜,不是指證書的使用者)。對于上面的這個證書來說驻售,就是指"SecureTrust CA"這個機(jī)構(gòu)露久。

◆Valid from , Valid to (證書的有效期)
也就是證書的有效時間,或者說證書的使用期限欺栗。 過了有效期限毫痕,證書就會作廢,不能使用了迟几。

◆Public key (公鑰)
這個我們在前面介紹公鑰密碼體制時介紹過消请,公鑰是用來對消息進(jìn)行加密的,第2章的例子中經(jīng)常用到的类腮。這個數(shù)字證書的公鑰是2048位的臊泰,它的值可以在圖的中間的那個對話框中看得到,是很長的一串?dāng)?shù)字存哲。

◆Subject (主題)
這個證書是發(fā)布給誰的因宇,或者說證書的所有者七婴,一般是某個人或者某個公司名稱祟偷、機(jī)構(gòu)的名稱、公司網(wǎng)站的網(wǎng)址等打厘。 對于這里的證書來說修肠,證書的所有者是Trustwave這個公司。

◆Signature algorithm (簽名所使用的算法)
就是指的這個數(shù)字證書的數(shù)字簽名所使用的加密算法户盯,這樣就可以使用證書發(fā)布機(jī)構(gòu)的證書里面的公鑰嵌施,根據(jù)這個算法對指紋進(jìn)行解密饲化。指紋的加密結(jié)果就是數(shù)字簽名(第1.5節(jié)中解釋過數(shù)字簽名)。

◆Thumbprint, Thumbprint algorithm (指紋以及指紋算法)
這個是用來保證證書的完整性的吗伤,也就是說確保證書沒有被修改過吃靠,這東西的作用和2.7中說到的第3個問題類似。 其原理就是在發(fā)布證書時足淆,發(fā)布者根據(jù)指紋算法(一個hash算法)計算整個證書的hash值(指紋)并和證書放在一起巢块,使用者在打開證書時,自己也根據(jù)指紋算法計算一下證書的hash值(指紋)巧号,如果和剛開始的值對得上族奢,就說明證書沒有被修改過,因為證書的內(nèi)容被修改后丹鸿,根據(jù)證書的內(nèi)容計算的出的hash值(指紋)是會變化的越走。 注意,這個指紋會使用"SecureTrust CA"這個證書機(jī)構(gòu)的私鑰用簽名算法(Signature algorithm)加密后和證書放在一起靠欢。

注意廊敌,為了保證安全,在證書的發(fā)布機(jī)構(gòu)發(fā)布證書時门怪,證書的指紋和指紋算法庭敦,都會加密后再和證書放到一起發(fā)布,以防有人修改指紋后偽造相應(yīng)的數(shù)字證書薪缆。這里問題又來了秧廉,證書的指紋和指紋算法用什么加密呢?他們是用證書發(fā)布機(jī)構(gòu)的私鑰進(jìn)行加密的拣帽√鄣纾可以用證書發(fā)布機(jī)構(gòu)的公鑰對指紋和指紋算法解密,也就是說證書發(fā)布機(jī)構(gòu)除了給別人發(fā)布證書外减拭,他自己本身也有自己的證書蔽豺。證書發(fā)布機(jī)構(gòu)的證書是哪里來的呢?拧粪?修陡?這個證書發(fā)布機(jī)構(gòu)的數(shù)字證書(一般由他自己生成)在我們的操作系統(tǒng)剛安裝好時(例如windows xp等操作系統(tǒng)),這些證書發(fā)布機(jī)構(gòu)的數(shù)字證書就已經(jīng)被微軟(或者其它操作系統(tǒng)的開發(fā)機(jī)構(gòu))安裝在操作系統(tǒng)中了可霎,微軟等公司會根據(jù)一些權(quán)威安全機(jī)構(gòu)的評估選取一些信譽很好并且通過一定的安全認(rèn)證的證書發(fā)布機(jī)構(gòu)魄鸦,把這些證書發(fā)布機(jī)構(gòu)的證書默認(rèn)就安裝在操作系統(tǒng)里面了,并且設(shè)置為操作系統(tǒng)信任的數(shù)字證書癣朗。這些證書發(fā)布機(jī)構(gòu)自己持有與他自己的數(shù)字證書對應(yīng)的私鑰拾因,他會用這個私鑰加密所有他發(fā)布的證書的指紋作為數(shù)字簽名。

3.2 如何向證書的發(fā)布機(jī)構(gòu)去申請證書
舉個例子方便大家理解,假設(shè)我們公司"ABC Company"花了1000塊錢绢记,向一個證書發(fā)布機(jī)構(gòu)"SecureTrust CA"為我們自己的公司"ABC Company"申請了一張證書扁达,注意,這個證書發(fā)布機(jī)構(gòu)"SecureTrust CA"是一個大家公認(rèn)并被一些權(quán)威機(jī)構(gòu)接受的證書發(fā)布機(jī)構(gòu)蠢熄,我們的操作系統(tǒng)里面已經(jīng)安裝了"SecureTrust CA"的證書跪解。"SecureTrust CA"在給我們發(fā)布證書時,把Issuer,Public key,Subject,Valid from,Valid to等信息以明文的形式寫到證書里面签孔,然后用一個指紋算法計算出這些數(shù)字證書內(nèi)容的一個指紋惠遏,并把指紋和指紋算法用自己的私鑰進(jìn)行加密,然后和證書的內(nèi)容一起發(fā)布骏啰,同時"SecureTrust CA"還會給一個我們公司"ABC Company"的私鑰給到我們节吮。我們花了1000塊錢買的這個證書的內(nèi)容如下:

×××××××××××××××證書內(nèi)容開始×××××××××××××××××
Issuer : SecureTrust CA
Subject : ABC Company
Valid from : 某個日期
Valid to: 某個日期
Public Key : 一串很長的數(shù)字
…… 其它的一些證書內(nèi)容……

{證書的指紋和計算指紋所使用的指紋算法}[SecureTrust CA的私鑰|RSA] //這個就是"SecureTrust CA"對這個證書的一個數(shù)字簽名,表示這個證書確實是他發(fā)布的判耕,有什么問題他會負(fù)責(zé)(收了我們1000塊透绩,出了問題肯定要負(fù)責(zé)任的)
×××××××××××××××證書內(nèi)容結(jié)束×××××××××××××××××
** // 記不記得前面的約定?{} 表示RSA加密后的內(nèi)容壁熄,[ | ]表示用什么密鑰和算法進(jìn)行加密**

我們"ABC Company"申請到這個證書后帚豪,我們把證書投入使用,我們在通信過程開始時會把證書發(fā)給對方草丧,對方如何檢查這個證書的確是合法的并且是我們"ABC Company"公司的證書呢狸臣?首先應(yīng)用程序(對方通信用的程序,例如IE昌执、OUTLook等)讀取證書中的Issuer(發(fā)布機(jī)構(gòu))為"SecureTrust CA" 烛亦,然后會在操作系統(tǒng)中受信任的發(fā)布機(jī)構(gòu)的證書中去找"SecureTrust CA"的證書,如果找不到懂拾,那說明證書的發(fā)布機(jī)構(gòu)是個水貨發(fā)布機(jī)構(gòu)煤禽,證書可能有問題,程序會給出一個錯誤信息岖赋。 如果在系統(tǒng)中找到了"SecureTrust CA"的證書檬果,那么應(yīng)用程序就會從證書中取出"SecureTrust CA"的公鑰,然后對我們"ABC Company"公司的證書里面的指紋和指紋算法用這個公鑰進(jìn)行解密唐断,然后使用這個指紋算法計算"ABC Company"證書的指紋选脊,將這個計算的指紋與放在證書中的指紋對比,如果一致脸甘,說明"ABC Company"的證書肯定沒有被修改過并且證書是"SecureTrust CA" 發(fā)布的恳啥,證書中的公鑰肯定是"ABC Company"的。對方然后就可以放心的使用這個公鑰和我們"ABC Company"進(jìn)行通信了斤程。
★這個部分非常重要角寸,一定要理解升薯,您可以重新回顧一下之前的兩章“1夏跷、基礎(chǔ)知識”和“ 2、一個加密通信過程的演化”算撮,然后再來理解這部分的內(nèi)容疚脐。如果您把這節(jié)的內(nèi)容看了幾遍還沒有搞懂證書的工作原理亿柑,您可以留言指出我沒有說清楚的內(nèi)容,我好方便進(jìn)行修正棍弄。

3.3 證書的發(fā)布機(jī)構(gòu)
前面已經(jīng)初步介紹了一下證書發(fā)布機(jī)構(gòu)望薄,這里再深入討論一下。
其實所有的公司都可以發(fā)布證書呼畸,我們自己也可以去注冊一家公司來專門給別人發(fā)布證書痕支。但是很明顯,我們自己的專門發(fā)布證書的公司是不會被那些國際上的權(quán)威機(jī)構(gòu)認(rèn)可的蛮原,人家怎么知道你是不是個狗屁皮包公司卧须?因此微軟在它的操作系統(tǒng)中,并不會信任我們這個證書發(fā)布機(jī)構(gòu)儒陨,當(dāng)應(yīng)用程序在檢查證書的合法信的時候花嘶,一看證書的發(fā)布機(jī)構(gòu)并不是操作系統(tǒng)所信任的發(fā)布機(jī)構(gòu),就會拋出錯誤信息蹦漠。也就是說windows操作系統(tǒng)中不會預(yù)先安裝好我們這個證書發(fā)布機(jī)構(gòu)的證書椭员,不信任我們這個發(fā)布機(jī)構(gòu)。


不受信任的證書發(fā)布機(jī)構(gòu)的危害
為什么一個證書發(fā)布機(jī)構(gòu)受不受信任這么重要笛园?我們舉個例子隘击。假設(shè)我們開了一個狗屁公司來為別人發(fā)布證書,并且我和微軟有一腿研铆,微軟在他們的操作系統(tǒng)中把我設(shè)置為了受信任的證書發(fā)布機(jī)構(gòu)≌⒍龋現(xiàn)在如果有個小公司叫Wicrosoft 花了10塊錢讓我為他們公司申請了一個證書,并且公司慢慢壯大蚜印,證書的應(yīng)用范圍也越來越廣莺禁。然后有個奸商的公司JS Company想冒充Wicrosoft,于是給了我¥10000窄赋,讓我為他們頒布一個證書哟冬,但是證書的名字(Subject)要寫Wicrosoft,假如我為了這¥10000忆绰,真的把證書給了他們浩峡,那么他們以后就可以使用這個證書來冒充Wicrosoft了。
如果是一個優(yōu)秀的證書發(fā)布機(jī)構(gòu)错敢,比如你要向他申請一個名字叫Wicrosoft的證書翰灾,它會讓你提供很多資料證明你確實可以代表Wicrosoft這個公司缕粹,也就是說他回去核實你的身份。證書發(fā)布機(jī)構(gòu)是要為他發(fā)布出的證書負(fù)法律責(zé)任的纸淮。

到這里平斩,你可能會想,TMD咽块,那我們自己就不能發(fā)布證書嗎绘面?就一定要花錢去申請?當(dāng)然不是侈沪,我們自己也可以成立證書發(fā)布機(jī)構(gòu)揭璃,但是需要通過一些安全認(rèn)證等等,只是有點麻煩亭罪。另外瘦馍,如果數(shù)字證書只是要在公司內(nèi)部使用,公司可以自己給自己生成一個證書应役,在公司的所有機(jī)器上把這個證書設(shè)置為操作系統(tǒng)信任的證書發(fā)布機(jī)構(gòu)的證書(這句話仔細(xì)看清楚情组,有點繞口),這樣以后公司發(fā)布的證書在公司內(nèi)部的所有機(jī)器上就可以通過驗證了(在發(fā)布證書時扛吞,把這些證書的Issuer(發(fā)布機(jī)構(gòu))設(shè)置為我們自己的證書發(fā)布機(jī)構(gòu)的證書的Subject(主題)就可以了)呻惕。但是這只限于內(nèi)部應(yīng)用,因為只有我們公司自己的機(jī)器上設(shè)置了信任我們自己這個所謂的證書發(fā)布機(jī)構(gòu)滥比,而其它機(jī)器上并沒有事先信任我們這個證書發(fā)布機(jī)構(gòu)亚脆,所以在其它機(jī)器上,我們發(fā)布的證書就無法通過安全驗證盲泛。

  1. 在windows中對數(shù)字證書進(jìn)行管理
    4.1 查看濒持、刪除、安裝 數(shù)字證書
    我們在上一章中說到了寺滚,我們的操作系統(tǒng)中會預(yù)先安裝好一些證書發(fā)布機(jī)構(gòu)的證書柑营,我們看下在windows中如何找到這些證書,步驟如下:
1)開始菜單->運行村视,輸入mmc官套,回車
2)在打開的窗口中選擇 File-> Add/Remove Snap-in…
3)然后在彈出的對話框的 Standalone Tab頁里面點擊 Add… 按鈕
4)在彈出的對對話框中選擇 certificates 后點擊 Add 按鈕

具體的步驟如下圖所示:


上面的步驟結(jié)束后,會又彈出一個對話框蚁孔,里面有三個單選按鈕如下:

My user account
Service account
Computer account

可以選擇第一或者第三個選項奶赔,用來查看當(dāng)前用戶的證書或整個計算里面安裝的證書。我們這里就默認(rèn)選擇第一個杠氢,平時一般安裝證書的時候都會給所有用戶安裝站刑,所以選擇第一個和第三個選項看到的證書會差不多。我們在左邊的導(dǎo)航樹中選中受信任的證書發(fā)布機(jī)構(gòu)(Trusted Root Certificate Authorities)鼻百,然后點擊下面的證書(Certificates)绞旅,在右邊的區(qū)域中就可以看到所有的受信任的證書發(fā)布機(jī)構(gòu)的證書摆尝。


注意上面的圖片中,右邊我們選中的這個證書發(fā)布機(jī)構(gòu)"SecureTrust CA"因悲,我們前面在第3章3.2節(jié)中舉例子的時候堕汞,就是去向這個證書發(fā)布機(jī)構(gòu)申請的證書,由于我們申請的證書是這個機(jī)構(gòu)發(fā)布的囤捻,所以應(yīng)用程序在檢查我們的證書的發(fā)布機(jī)構(gòu)時(會檢查我們證書的簽名臼朗,確認(rèn)是該機(jī)構(gòu)發(fā)布的證書)邻寿,就會發(fā)現(xiàn)是可以信任的證書發(fā)布機(jī)構(gòu)蝎土,從而就會相信我們證書的真實性。
刪除數(shù)字證書很簡單绣否,直接在右邊的列表中右鍵然后刪除就可以了誊涯。
數(shù)字證書的安裝也比較簡單,直接雙擊數(shù)字證書文件蒜撮,會打開數(shù)字證書暴构,對話框下面會有一個Install Certificate按鈕,點擊后就可以根據(jù)向?qū)нM(jìn)行安裝段磨,如下圖所示:
installCertificate

這個證書是我自己生成的測試證書取逾,在證書的導(dǎo)入向?qū)Ю锩妫鼤屇氵x擇導(dǎo)入到什么位置苹支,如果是一個我們自己信任的證書發(fā)布機(jī)構(gòu)自己的證書砾隅,只要導(dǎo)入到Certificate Authorities就可以了。Trusted Root Certificate Authorities, Intermediate Certification Authorities, Third-Party Root Certification Authorities 都是可以的债蜜,他們只是對證書的發(fā)布機(jī)構(gòu)做了一個分類晴埂,還有一些其它的證書類型,例如Personal(個人證書)等等寻定,具體就不介紹了儒洛。安裝的時候一般來說可以用默認(rèn)的選擇項一直"下一步"到底。

4.2 如何自己創(chuàng)建證書
每個證書發(fā)布機(jī)構(gòu)都有自己的用來創(chuàng)建證書的工具狼速,當(dāng)然琅锻,具體他們怎么去創(chuàng)建一個證書的我也不太清楚,不同類型的證書都有一定的格式和規(guī)范向胡,我沒有仔細(xì)去研究過這部分內(nèi)容恼蓬。 微軟為我們提供了一個用來創(chuàng)建證書的工具makecert.exe,在安裝Visual Studio的時候會安裝上捷枯。如果沒有安裝也無所謂滚秩,可以上網(wǎng)去下一個,搜索makecert就可以了淮捆∮粲停可以直接從我的博客下載本股,這是鏈接
向一些正規(guī)的證書發(fā)布機(jī)構(gòu)申請證書一般是要收費的(因為別人要花時間檢查你的身份桐腌,確認(rèn)有沒有同名的證書等等)拄显,這里我們看下如何自己創(chuàng)建一個證書,為后面在IIS中配置Https做準(zhǔn)備案站。
我們用到的是makecert這個工具躬审,微軟有很詳細(xì)的使用幫助,我這里只做一個簡單的解釋蟆盐,詳細(xì)的各種參數(shù)和使用方法請查看MSDN的makecert的幫助承边。但是里面有些參數(shù)說得不夠清楚,而且還有遺漏的石挂,可以參看我后面的解釋作為一個補充博助。

先看下makecert最簡單的使用方式:
makecert.exe test.cer
上面的命令會在makecert.exe所在的目錄生成一個證書文件test.cer的數(shù)字證書文件”杂蓿可以雙擊證書打開富岳,看看證書的內(nèi)容如下:


證書的發(fā)布機(jī)構(gòu)是"Root Agency",證書的主題(證書發(fā)布給誰)是"Joe’s-Software-Emporium"拯腮,因為我們沒有指定把證書發(fā)布給誰窖式,makecert自己給我們隨便生成了一個公司的名字。另外還指定了公鑰动壤、簽名算法(用來解密簽名)萝喘、指紋和指紋算法等。
注意狼电,因為這個證書是由微軟的工具生成的蜒灰,嚴(yán)格來說它沒什么發(fā)布機(jī)構(gòu),所以微軟虛擬了一個叫做"Root Agency"的發(fā)布機(jī)構(gòu)肩碟,默認(rèn)情況下强窖,windows里面安裝了這個所謂的證書發(fā)布機(jī)構(gòu)的證書,但是這證書默認(rèn)情況下不是受信任的削祈,原因很簡單翅溺,這樣做大家都可以用makecert來制作合法的數(shù)字證書了。如果我們自己硬是要髓抑,也可以把它設(shè)置為受信任的咙崎。

下面我們看下其它的參數(shù),比如我們要給網(wǎng)站 www.jefferysun.com 生成一個證書MyCA.cer吨拍,假設(shè)我們把makecert.exe放在C:盤下褪猛,命令行如下:
makecert -r -pe -n "CN=10.30.146.206" -b 01/01/2000 -e 01/01/2036 -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localMachine -sky exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
C:> makecert.exe –pe -r –n "CN=www.jefferysun.com" -ss my -sr LocalMachine -a sha1 -len 2048 MyCA.cer
解釋一下makecert的常用參數(shù)的意思:

-n 指定主題的名字,這個是有固定的格式的羹饰, CN=主題名字 伊滋,CN應(yīng)該是Certificate Name的縮寫碳却。我這里的主題的名字就是我們的IIS所在機(jī)器的IP。這里可以指定一些主題的其它附加信息笑旺,例如 O= *** 表示組織信息等等昼浦。
-r 創(chuàng)建自簽署證書,意思就是說在生成證書時筒主,將證書的發(fā)布機(jī)構(gòu)設(shè)置為自己关噪。
-pe 將所生成的私鑰標(biāo)記為可導(dǎo)出。注意乌妙,服務(wù)器發(fā)送證書給客戶端的時候使兔,客戶端只能從證書里面獲取公鑰,私鑰是無法獲取的冠胯。如果我們指定了這個參數(shù)火诸,證書在安裝在機(jī)器上后锦针,我們還可以從證書中導(dǎo)出私鑰荠察,默認(rèn)情況下是不能導(dǎo)出私鑰的。正規(guī)的途徑發(fā)布的證書奈搜,是不可能讓你導(dǎo)出私鑰的悉盆。
-b –e 證書的有效期
-ss 證書的存儲名稱,就是windows證書存儲區(qū)的目錄名馋吗,如果不存在在的話就創(chuàng)建一個焕盟。
-sr 證書的存儲位置,只有currentuser(默認(rèn)值)或 localmachine兩個值宏粤。
-sv 指定保存私鑰的文件脚翘,文件里面除了包含私鑰外,其實也包含了證書绍哎。這個文件是需要保密的来农,這個文件在服務(wù)端配置時是需要用到的。
這個CN=10.30.146.206要與自己的服務(wù)器相對應(yīng)崇堰,要不然在配置HTTPS的時候會出現(xiàn)錯誤
-a 指定簽名算法沃于,必須是md5或rsa1。(還記得簽名算法的作用不海诲?可以看一下3章的第1節(jié)中關(guān)于簽名算法的介紹)
-in 指定證書發(fā)布機(jī)構(gòu)的名稱
-len 這個參數(shù)在中文的幫助文檔中好像沒有提到繁莹,但是這個其實很重要,用于指定公鑰的位數(shù)特幔,越大越安全咨演,默認(rèn)值是1024,推薦2048蚯斯。我試了下薄风,這個不為1024的倍數(shù)也是可以的零院。

生成證書后可以進(jìn)行安裝,安裝過程可以參看4.1節(jié)村刨。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末告抄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子嵌牺,更是在濱河造成了極大的恐慌打洼,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逆粹,死亡現(xiàn)場離奇詭異募疮,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)僻弹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門阿浓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蹋绽,你說我怎么就攤上這事芭毙。” “怎么了卸耘?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵退敦,是天一觀的道長。 經(jīng)常有香客問我蚣抗,道長侈百,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任翰铡,我火速辦了婚禮钝域,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锭魔。我一直安慰自己例证,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布赂毯。 她就那樣靜靜地躺著战虏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪党涕。 梳的紋絲不亂的頭發(fā)上烦感,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機(jī)與錄音膛堤,去河邊找鬼手趣。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的绿渣。 我是一名探鬼主播朝群,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼中符!你這毒婦竟也來了姜胖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤淀散,失蹤者是張志新(化名)和其女友劉穎右莱,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體档插,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡慢蜓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了郭膛。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晨抡。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖则剃,靈堂內(nèi)的尸體忽然破棺而出耘柱,到底是詐尸還是另有隱情,我是刑警寧澤忍级,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布帆谍,位于F島的核電站,受9級特大地震影響轴咱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜烈涮,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一朴肺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧坚洽,春花似錦戈稿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至跳昼,卻和暖如春般甲,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鹅颊。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工敷存, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人堪伍。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓锚烦,卻偏偏與公主長得像觅闽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子涮俄,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容