小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

那些證書(shū)相關(guān)的玩意兒(SSL,X.509,PEM,DER,CRT,CER,KEY,CSR,P12等)

 看見(jiàn)就非常 2015-05-20

之前沒(méi)接觸過(guò)證書(shū)加密的話,對(duì)證書(shū)相關(guān)的這些概念真是感覺(jué)挺棘手的,因?yàn)橐幌伦觼?lái)了一大堆新名詞,看起來(lái)像是另一個(gè)領(lǐng)域的東西,而不是我們所熟悉的編程領(lǐng)域的那些東西,起碼我個(gè)人感覺(jué)如此,且很長(zhǎng)時(shí)間都沒(méi)怎么搞懂.寫(xiě)這篇文章的目的就是為了理理清這些概念,搞清楚它們的含義及關(guān)聯(lián),還有一些基本操作.

SSL

SSL - Secure Sockets Layer,現(xiàn)在應(yīng)該叫"TLS",但由于習(xí)慣問(wèn)題,我們還是叫"SSL"比較多.http協(xié)議默認(rèn)情況下是不加密內(nèi)容的,這樣就很可能在內(nèi)容傳播的時(shí)候被別人監(jiān)聽(tīng)到,對(duì)于安全性要求較高的場(chǎng)合,必須要加密,https就是帶加密的http協(xié)議,而https的加密是基于SSL的,它執(zhí)行的是一個(gè)比較下層的加密,也就是說(shuō),在加密前,你的服務(wù)器程序在干嘛,加密后也一樣在干嘛,不用動(dòng),這個(gè)加密對(duì)用戶(hù)和開(kāi)發(fā)者來(lái)說(shuō)都是透明的.More:[維基百科]

OpenSSL - 簡(jiǎn)單地說(shuō),OpenSSL是SSL的一個(gè)實(shí)現(xiàn),SSL只是一種規(guī)范.理論上來(lái)說(shuō),SSL這種規(guī)范是安全的,目前的技術(shù)水平很難破解,但SSL的實(shí)現(xiàn)就可能有些漏洞,如著名的"心臟出血".OpenSSL還提供了一大堆強(qiáng)大的工具軟件,強(qiáng)大到90%我們都用不到.

證書(shū)標(biāo)準(zhǔn)

X.509 - 這是一種證書(shū)標(biāo)準(zhǔn),主要定義了證書(shū)中應(yīng)該包含哪些內(nèi)容.其詳情可以參考RFC5280,SSL使用的就是這種證書(shū)標(biāo)準(zhǔn).

編碼格式

同樣的X.509證書(shū),可能有不同的編碼格式,目前有以下兩種編碼格式.

PEM - Privacy Enhanced Mail,打開(kāi)看文本格式,以"-----BEGIN..."開(kāi)頭, "-----END..."結(jié)尾,內(nèi)容是BASE64編碼.
查看PEM格式證書(shū)的信息:openssl x509 -in certificate.pem -text -noout
Apache和*NIX服務(wù)器偏向于使用這種編碼格式.

DER - Distinguished Encoding Rules,打開(kāi)看是二進(jìn)制格式,不可讀.
查看DER格式證書(shū)的信息:openssl x509 -in certificate.der -inform der -text -noout
Java和Windows服務(wù)器偏向于使用這種編碼格式.

相關(guān)的文件擴(kuò)展名

這是比較誤導(dǎo)人的地方,雖然我們已經(jīng)知道有PEM和DER這兩種編碼格式,但文件擴(kuò)展名并不一定就叫"PEM"或者"DER",常見(jiàn)的擴(kuò)展名除了PEM和DER還有以下這些,它們除了編碼格式可能不同之外,內(nèi)容也有差別,但大多數(shù)都能相互轉(zhuǎn)換編碼格式.

CRT - CRT應(yīng)該是certificate的三個(gè)字母,其實(shí)還是證書(shū)的意思,常見(jiàn)于*NIX系統(tǒng),有可能是PEM編碼,也有可能是DER編碼,大多數(shù)應(yīng)該是PEM編碼,相信你已經(jīng)知道怎么辨別.

CER - 還是certificate,還是證書(shū),常見(jiàn)于Windows系統(tǒng),同樣的,可能是PEM編碼,也可能是DER編碼,大多數(shù)應(yīng)該是DER編碼.

KEY - 通常用來(lái)存放一個(gè)公鑰或者私鑰,并非X.509證書(shū),編碼同樣的,可能是PEM,也可能是DER.
查看KEY的辦法:openssl rsa -in mykey.key -text -noout
如果是DER格式的話,同理應(yīng)該這樣了:openssl rsa -in mykey.key -text -noout -inform der

CSR - Certificate Signing Request,即證書(shū)簽名請(qǐng)求,這個(gè)并不是證書(shū),而是向權(quán)威證書(shū)頒發(fā)機(jī)構(gòu)獲得簽名證書(shū)的申請(qǐng),其核心內(nèi)容是一個(gè)公鑰(當(dāng)然還附帶了一些別的信息),在生成這個(gè)申請(qǐng)的時(shí)候,同時(shí)也會(huì)生成一個(gè)私鑰,私鑰要自己保管好.做過(guò)iOS APP的朋友都應(yīng)該知道是怎么向蘋(píng)果申請(qǐng)開(kāi)發(fā)者證書(shū)的吧.
查看的辦法:openssl req -noout -text -in my.csr (如果是DER格式的話照舊加上-inform der,這里不寫(xiě)了)

PFX/P12 - predecessor of PKCS#12,對(duì)*nix服務(wù)器來(lái)說(shuō),一般CRT和KEY是分開(kāi)存放在不同文件中的,但Windows的IIS則將它們存在一個(gè)PFX文件中,(因此這個(gè)文件包含了證書(shū)及私鑰)這樣會(huì)不會(huì)不安全?應(yīng)該不會(huì),PFX通常會(huì)有一個(gè)"提取密碼",你想把里面的東西讀取出來(lái)的話,它就要求你提供提取密碼,PFX使用的時(shí)DER編碼,如何把PFX轉(zhuǎn)換為PEM編碼?
openssl pkcs12 -in for-iis.pfx -out for-iis.pem -nodes
這個(gè)時(shí)候會(huì)提示你輸入提取代碼. for-iis.pem就是可讀的文本.
生成pfx的命令類(lèi)似這樣:openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
其中CACert.crt是CA(權(quán)威證書(shū)頒發(fā)機(jī)構(gòu))的根證書(shū),有的話也通過(guò)-certfile參數(shù)一起帶進(jìn)去.這么看來(lái),PFX其實(shí)是個(gè)證書(shū)密鑰庫(kù).

JKS - 即Java Key Storage,這是Java的專(zhuān)利,跟OpenSSL關(guān)系不大,利用Java的一個(gè)叫"keytool"的工具,可以將PFX轉(zhuǎn)為JKS,當(dāng)然了,keytool也能直接生成JKS,不過(guò)在此就不多表了.

證書(shū)編碼的轉(zhuǎn)換

PEM轉(zhuǎn)為DER openssl x509 -in cert.crt -outform der -out cert.der

DER轉(zhuǎn)為PEM openssl x509 -in cert.crt -inform der -outform pem -out cert.pem

(提示:要轉(zhuǎn)換KEY文件也類(lèi)似,只不過(guò)把x509換成rsa,要轉(zhuǎn)CSR的話,把x509換成req...)

獲得證書(shū)

向權(quán)威證書(shū)頒發(fā)機(jī)構(gòu)申請(qǐng)證書(shū)

用這命令生成一個(gè)csr: openssl req -newkey rsa:2048 -new -nodes -keyout my.key -out my.csr
把csr交給權(quán)威證書(shū)頒發(fā)機(jī)構(gòu),權(quán)威證書(shū)頒發(fā)機(jī)構(gòu)對(duì)此進(jìn)行簽名,完成.保留好csr,當(dāng)權(quán)威證書(shū)頒發(fā)機(jī)構(gòu)頒發(fā)的證書(shū)過(guò)期的時(shí)候,你還可以用同樣的csr來(lái)申請(qǐng)新的證書(shū),key保持不變.

或者生成自簽名的證書(shū)
openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
在生成證書(shū)的過(guò)程中會(huì)要你填一堆的東西,其實(shí)真正要填的只有Common Name,通常填寫(xiě)你服務(wù)器的域名,如"yourcompany.com",或者你服務(wù)器的IP地址,其它都可以留空的.
生產(chǎn)環(huán)境中還是不要使用自簽的證書(shū),否則瀏覽器會(huì)不認(rèn),或者如果你是企業(yè)應(yīng)用的話能夠強(qiáng)制讓用戶(hù)的瀏覽器接受你的自簽證書(shū)也行.向權(quán)威機(jī)構(gòu)要證書(shū)通常是要錢(qián)的,但現(xiàn)在也有免費(fèi)的,僅僅需要一個(gè)簡(jiǎn)單的域名驗(yàn)證即可.有興趣的話查查"沃通數(shù)字證書(shū)".

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多