關(guān)于證書(shū)的那些事:自簽名證書(shū)和私有CA簽名證書(shū)等

證書(shū)的三個(gè)作用 加密通信和身份驗(yàn)證(驗(yàn)證對(duì)方確實(shí)是對(duì)方聲稱(chēng)的對(duì)象)和數(shù)據(jù)完整性(無(wú)法被修改,修改了會(huì)被知)

證書(shū)類(lèi)型:
x509的證書(shū)編碼格式有兩種
1.PEM(Privacy-enhanced Electronic Mail) 是明文格式的 以 -----BEGIN CERTIFICATE-----開(kāi)頭攘须,已-----END CERTIFICATE-----結(jié)尾,中間是經(jīng)過(guò)base64編碼的內(nèi)容,apache需要的證書(shū)就是這類(lèi)編碼的證書(shū) 查看這類(lèi)證書(shū)的信息的命令為 :openssl x509 -noout -text -in server.pem
其實(shí)PEM就是把DER的內(nèi)容進(jìn)行了一次base64編碼
2.DER 是二進(jìn)制格式的證書(shū) 查看這類(lèi)證書(shū)的信息的命令為 :openssl x509 -noout -text -inform der -in server.der

擴(kuò)展名:
.crt 證書(shū)文件 雷绢,可以是DER(二進(jìn)制)編碼的徽惋,也可以是PEM( ASCII (Base64) )編碼的 锨推,在類(lèi)unix系統(tǒng)中比較常見(jiàn)
.cer 也是證書(shū) 常見(jiàn)于Windows系統(tǒng) 編碼類(lèi)型同樣可以是DER或者PEM的赘理,windows 下有工具可以轉(zhuǎn)換crt到cer
.csr 證書(shū)簽名請(qǐng)求 一般是生成請(qǐng)求以后發(fā)送給CA宦言,然后CA會(huì)給你簽名并發(fā)回證書(shū)
.key 一般公鑰或者密鑰都會(huì)用這種擴(kuò)展名,可以是DER編碼的或者是PEM編碼的 查看DER編碼的(公鑰或者密鑰)的文件的命令為 openssl rsa -inform DER -noout -text -in xxx.key 查看PEM編碼的(公鑰或者密鑰)的文件的命令為 openssl rsa -inform PEM -noout -text -in xxx.key
.p12 證書(shū) 包含一個(gè)X509證書(shū)和一個(gè)被密碼保護(hù)的私鑰

自簽名證書(shū)和CA簽名證書(shū)的區(qū)別
自簽名的證書(shū)無(wú)法被吊銷(xiāo)感憾,CA簽名的證書(shū)可以被吊銷(xiāo) 能不能吊銷(xiāo)證書(shū)的區(qū)別在于蜡励,如果你的私鑰被黑客獲取令花,如果證書(shū)不能被吊銷(xiāo)阻桅,則黑客可以偽裝成你與用戶進(jìn)行通信

如果你的規(guī)劃需要?jiǎng)?chuàng)建多個(gè)證書(shū)凉倚,那么使用私有CA的方法比較合適,因?yàn)橹灰o所有的客戶端都安裝了CA的證書(shū)嫂沉,那么以該證書(shū)簽名過(guò)的證書(shū)稽寒,客戶端都是信任的,也就是安裝一次就夠了
如果你直接用自簽名證書(shū)趟章,你需要給所有的客戶端安裝該證書(shū)才會(huì)被信任杏糙,如果你需要第二個(gè)證書(shū),則還的挨個(gè)給所有的客戶端安裝證書(shū)2才會(huì)被信任蚓土。

****Linux下使用OpenSSL生成證書(shū)****

利用OpenSSL生成庫(kù)和命令程序,在生成的命令程序中包括對(duì)加/解密算法的測(cè)試,openssl程序,ca程序.利用openssl,ca可生成用于C/S模式的證書(shū)文件以及CA文件宏侍。
證書(shū)文件的生成步驟:
一、服務(wù)器端
1.生成服務(wù)器端的私鑰(key文件);
openssl genrsa -des3 -out server.key 1024
運(yùn)行時(shí)會(huì)提示輸入密碼,此密碼用于加密key文件(參數(shù)des3是加密算法,也可以選用其他安全的算法),以后每當(dāng)需讀取此文件(通過(guò)openssl提供的命令或API)都需輸入口令.如果不要口令,則可用以下命令去除口令:
openssl rsa -in server.key -out server.key

生成無(wú)需密碼的服務(wù)器私鑰 蜀漆,如果私鑰是有密碼的谅河,則每次啟動(dòng)web服務(wù)器都會(huì)要求你輸入密碼

2.生成服務(wù)器端證書(shū)簽名請(qǐng)求文件(csr文件);
openssl req -new -key server.key -out server.csr
生成Certificate Signing Request(CSR),生成的csr文件交給CA簽名后形成服務(wù)端自己的證書(shū).屏幕上將有提示,依照其 提示一步一步輸入要求的個(gè)人信息即可(如:Country,province,city,company等).


****注意:前方高能預(yù)警!H范1了!!鲜侥!****
最重要的是有一個(gè)common name褂始,可以寫(xiě)你的名字或者域名。如果為了https申請(qǐng)描函,這個(gè)必須和域名吻合崎苗,否則會(huì)引發(fā)瀏覽器警報(bào)。

二舀寓、客戶端
1.對(duì)客戶端也作同樣的命令生成key及csr文件;
openssl genrsa -des3 -out client.key 1024
openssl req -new -key client.key -out client.csr



三益缠、生成CA證書(shū)文件
server.csr與client.csr文件必須有CA的簽名才可形成證書(shū).
1.首先生成CA的key文件:
openssl genrsa -des3 -out ca.key 1024
2.生成CA自簽名證書(shū):
openssl req -new -x509 -key ca.key -out ca.crt
可以加證書(shū)過(guò)期時(shí)間選項(xiàng) "-days 365".


四、利用CA證書(shū)進(jìn)行簽名

方法一:
可以加證書(shū)的有效時(shí)間選項(xiàng) "-days 365".也可以不加時(shí)間基公,標(biāo)識(shí)永久有效
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt

方法二:
用生成的CA證書(shū)為server.csr,client.csr文件簽名,利用openssl中附帶的CA.pl文件

  1. 在提示輸入已有的證書(shū)文件時(shí),輸入上面已生成的ca.crt證書(shū)文件;
    ca.pl –newca
    2.生成服務(wù)端證書(shū)文件
    openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config openssl.cnf



    3.生成客戶端證書(shū)文件
    openssl ca -in client.csr -out client.crt -cert ca.crt -keyfile ca.key -config openssl.cnf
    必須保證openssl.cnf在當(dāng)前目錄下,這個(gè)文件可以在apps目錄中找到.



    五幅慌、可能出現(xiàn)的錯(cuò)誤
    錯(cuò)誤1:
    error loading the config file 'openssl.cnf'
    解決方法
    find . -name "openssl.c*"

    cp /usr/local/ssl/openssl.cnf ./
    錯(cuò)誤2:




    解決方法
    touch demoCA/serial
    echo "00" > demoCA/serial

三.查看信息
openssl rsa -noout -text -in server.key 查看私鑰信息
openssl req -noout -text -in server.csr 查看簽名請(qǐng)求信息
openssl rsa -noout -text -in ca.key 查看ca的私鑰信息
openssl x509 -noout -text -in ca.crt 查看證書(shū)信息
openssl crl -text -in xx.crl 查看一個(gè)證書(shū)吊銷(xiāo)列表信息
openssl x509 -purpose -in cacert.pem 查看一個(gè)證書(shū)的額外信息
openssl rsa -in key.pem -pubout -out pubkey.pem 從一個(gè)私鑰里面提取出公鑰
openssl rsa -noout -text -pubin -in apache.pub 查看一個(gè)公鑰的信息
openssl verify -CAfile 指定CA文件路徑 apache.crt 驗(yàn)證一個(gè)證書(shū)是否是某一個(gè)CA簽發(fā)
openssl s_client -connect 192.168.20.51:443 模擬一個(gè)ssl客戶端訪問(wèn)ssl服務(wù)器 如果服務(wù)端要求客戶端提供證書(shū) 則在加上 -cert 和-key參數(shù) 比如 openssl s_client -connect 192.168.20.51:443 -cert client.crt -key client.key
openssl pkcs12 -in path.p12 -out newfile.crt.pem -clcerts -nokeys 從p12文件里面提取證書(shū)openssl pkcs12 -in path.p12 -out newfile.key.pem -nocerts -nodes 從p12文件里面提取私鑰

現(xiàn)代瀏覽器檢查一個(gè)證書(shū)是否仍然有效 兩種方法 OCSP (Online Certificate Status Protocol,在線證書(shū)狀態(tài)協(xié)議) 和crl (Certificate Revoke List 轰豆,證書(shū)吊銷(xiāo)列表)
這些信息在CA的證書(shū)里面應(yīng)該得有胰伍,否則瀏覽器無(wú)法檢查由該CA簽過(guò)的證書(shū)是否還繼續(xù)有效 (這句話屬于猜測(cè))
可以試一下導(dǎo)出給京東或者淘寶簽名的CA證書(shū) 并用openssl x509 -noout -text -in ca.crt 查看一下,就能看到這兩類(lèi)信息京東的證書(shū)是由GeoTrustSSL進(jìn)行簽名的酸休,導(dǎo)出GeoTrustSSL CA的證書(shū) 然后查看該CA的信息其中有一段信息是這樣

 X509v3 CRL Distribution Points:   

  Full Name:  
  URI:http://g1.symcb.com/crls/gtglobal.crl  

Authority Information Access:   
OCSP - URI:http://g2.symcb.com  

這里說(shuō)明了它的證書(shū)吊銷(xiāo)列表地址和OSCP協(xié)議地址有興趣的可以試試給淘寶簽名的CA的證書(shū)信息

對(duì)已證書(shū)吊銷(xiāo)列表 各瀏覽器的行為可以參考一下兩個(gè)地址
http://news.netcraft.com/archives/2013/05/13/how-certificate-revocation-doesnt-work-in-practice.html
https://www.trustwave.com/Resources/SpiderLabs-Blog/Defective-By-Design----Certificate-Revocation-Behavior-In-Modern-Browsers/

相關(guān)參考信息鏈接

http://blog.csdn.net/sdcxyz/article/details/47220129
http://www.linuxidc.com/Linux/2015-05/117034.htm

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末骂租,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子斑司,更是在濱河造成了極大的恐慌渗饮,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異互站,居然都是意外死亡私蕾,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)胡桃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)踩叭,“玉大人,你說(shuō)我怎么就攤上這事翠胰∪荼矗” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵之景,是天一觀的道長(zhǎng)斤富。 經(jīng)常有香客問(wèn)我,道長(zhǎng)锻狗,這世上最難降的妖魔是什么满力? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮屋谭,結(jié)果婚禮上脚囊,老公的妹妹穿的比我還像新娘。我一直安慰自己桐磁,他們只是感情好悔耘,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著我擂,像睡著了一般衬以。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上校摩,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天看峻,我揣著相機(jī)與錄音,去河邊找鬼衙吩。 笑死互妓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的坤塞。 我是一名探鬼主播冯勉,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼摹芙!你這毒婦竟也來(lái)了灼狰?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤浮禾,失蹤者是張志新(化名)和其女友劉穎交胚,沒(méi)想到半個(gè)月后份汗,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蝴簇,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年杯活,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片军熏。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡轩猩,死狀恐怖卷扮,靈堂內(nèi)的尸體忽然破棺而出荡澎,到底是詐尸還是另有隱情,我是刑警寧澤晤锹,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布摩幔,位于F島的核電站,受9級(jí)特大地震影響鞭铆,放射性物質(zhì)發(fā)生泄漏或衡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一车遂、第九天 我趴在偏房一處隱蔽的房頂上張望封断。 院中可真熱鬧,春花似錦舶担、人聲如沸坡疼。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)柄瑰。三九已至,卻和暖如春剪况,著一層夾襖步出監(jiān)牢的瞬間教沾,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工译断, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留授翻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓孙咪,卻偏偏與公主長(zhǎng)得像堪唐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子该贾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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