什么是數(shù)字簽名(digital signature
)
digital signature
,比如先用Hash
函數(shù)成內(nèi)容的摘要 digest
谬运,使用私鑰對(duì)這個(gè)摘要加密,生成數(shù)字簽名
什么是數(shù)字證書(shū)(digital certificate
)
digital certificate
是 證書(shū)中心,即CA機(jī)構(gòu) certificate authority
用自己的私鑰赌蔑,對(duì)要認(rèn)證的公鑰以及公鑰的一些附帶信息進(jìn)行加密丸相,生成的證書(shū)搔确,即數(shù)字證書(shū)
證書(shū)標(biāo)準(zhǔn)
X.509
這是一種證書(shū)標(biāo)準(zhǔn),主要定義了證書(shū)中應(yīng)該包含了哪些內(nèi)容
編碼格式
同樣的 X.509
證書(shū)灭忠,可能用不同的編碼格式膳算。主要的編碼格式主要有以下兩種
-
PEM
-Private Enhanced Mail
,打開(kāi)文件格式 以-----BEGIN...
開(kāi)頭
以-----END...
結(jié)尾,內(nèi)容是BASE64
編碼
查看PEM格式證書(shū)的信息:openssl x509 -in certificate.pem -text -noout
-
DER
-Distinguished Encoding Rules
二進(jìn)制文件弛作,不可讀
查看DER格式證書(shū)的信息:openssl x509 -in certificate.der -inform der -text -noout
什么是csr
文件
csr
文件就是Certificate secure request
證書(shū)請(qǐng)求文件涕蜂。以-----BEGIN CERTIFICATE REQUEST-----
開(kāi)頭,以-----END CERTIFICATE REQUEST-----
結(jié)尾映琳。
我們想要申請(qǐng)CA機(jī)構(gòu)頒發(fā)的證書(shū)机隙,首先要生成CSR文件。CSR文件需要由申請(qǐng)人提供域名 公司名稱萨西、部門等信息黍瞧。生成命令
openssl req -new -nodes -newkey rsa:2048 -keyout domain.key -out domain.csr
同時(shí)也會(huì)生成私鑰文件
證書(shū)申請(qǐng)者只要把CSR文件提交給證書(shū)頒發(fā)機(jī)構(gòu)后,證書(shū)頒發(fā)機(jī)構(gòu)使用其根證書(shū)私鑰簽名就生成了證書(shū)公鑰文件原杂,也就是頒發(fā)給用戶的證書(shū)印颤。
相關(guān)的文件拓展名
這是比較誤導(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
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)的話,它就要求你提供提取密碼
一些命令
- 生成自簽名證書(shū)
openssl req -new -x509 -days 365 -nodes -out server_cert.pem -keyout server_key.pem
- 向權(quán)威證書(shū)頒發(fā)機(jī)構(gòu)申請(qǐng)證書(shū)
openssl req -newkey rsa:2048 -new -nodes -keyout domain.key -out domain.csr
- 證書(shū)轉(zhuǎn)換 http://www.netkiller.cn/cryptography/openssl/format.html