簽發(fā)證書命令 :
- 生成私鑰:
openssl genrsa -out helios.key 1024
- 通過私鑰生成公鑰:
openssl rsa -in helios.key -pubout -out helios.pem
- 生成證書簽名請求:
openssl req -key helios.key -new -out helios.req
- CA簽發(fā)證書:
openssl x509 -req -in helios.req -CA cacertificate.pem -CAkey caprivate.key -out helioscertificate.pem
- 查看證書簽名請求文件內(nèi)容:
openssl req -in helios.req -noout -text
一、編碼格式
轉(zhuǎn)載自:https://www.cnblogs.com/workharder/p/13051052.html
同樣的 X.509
證書,可能有不同的編碼格式,目前常見的有以下兩種編碼格式。
PEM - Privacy Enhanced Mail
打開看文本格式,以-----BEGIN...
開頭,-----END...
結(jié)尾,內(nèi)容是 BASE64 編碼。
查看 PEM 格式證書的信息:openssl x509 -in certificate.pem -text -noout
。
Apache 和 UNIX 服務(wù)器偏向于使用這種編碼格式。DER - Distinguished Encoding Rules
打開看是二進(jìn)制格式,不可讀。
查看 DER 格式證書的信息:openssl x509 -in certificate.der **-inform der** -text -noout
。
Java 和 Windows 服務(wù)器偏向于使用這種編碼格式。
二、相關(guān)的文件擴(kuò)展名
這是比較誤導(dǎo)人的地方,雖然我們已經(jīng)知道有 PEM 和 DER 這兩種編碼格式,但文件擴(kuò)展名并不一定就叫PEM
或者DER
,常見的擴(kuò)展名除了 PEM 和 DER 還有以下這些,它們除了編碼格式可能不同之外,內(nèi)容也有差別,但大多數(shù)都能相互轉(zhuǎn)換編碼格式。
CRT
CRT 應(yīng)該是 certificate 的三個(gè)字母,其實(shí)還是證書的意思。常見于 UNIX 系統(tǒng),有可能是 PEM 編碼,也有可能是 DER 編碼,大多數(shù)應(yīng)該是 PEM 編碼,相信你已經(jīng)知道怎么辨別。CER
還是 certificate,還是證書。常見于 Windows 系統(tǒng),同樣的可能是 PEM 編碼,也可能是 DER 編碼,大多數(shù)應(yīng)該是 DER 編碼。KEY
通常用來存放一個(gè)公鑰或者私鑰,并非 X.509 證書。編碼同樣的,可能是 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,即證書簽名請求。這個(gè)并不是證書,而是向權(quán)威證書頒發(fā)機(jī)構(gòu)獲得簽名證書的申請,其核心內(nèi)容是一個(gè)公鑰(當(dāng)然還附帶了一些別的信息)。在生成這個(gè)申請的時(shí)候,同時(shí)也會(huì)生成一個(gè)私鑰,私鑰要自己保管好。
查看方式:openssl req -noout -text -in my.csr
。
如果是 DER 格式:openssl req -noout -text -in my.csr -inform der
。PFX/P12
predecessor of PKCS#12,對 unix 服務(wù)器來說,一般 CRT 和 KEY 是分開存放在不同文件中的,但 Windows 的 IIS 則將它們存在一個(gè) PFX 文件中,(因此這個(gè)文件包含了證書及私鑰)這樣會(huì)不會(huì)不安全?應(yīng)該不會(huì),PFX 通常會(huì)有一個(gè)“提取密碼”,你想把里面的東西讀取出來的話,它就要求你提供提取密碼,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 的命令類似這樣:openssl pkcs12 -export -in certificate.crt -inkey privateKey.key -out certificate.pfx -certfile CACert.crt
其中CACert.crt
是 CA(權(quán)威證書頒發(fā)機(jī)構(gòu))的根證書,有的話也通過 -certfile 參數(shù)一起帶進(jìn)去。這么看來,PFX 其實(shí)是個(gè)證書密鑰庫。
三、自己的理解
PEM 和 DER是不同的編碼方式,PEM在 linux 上常用,DER 在 window 上常用,可以相互轉(zhuǎn)換。
在 linux 上常用 crt 和 key 倆文件,在 window 常用 PFX,PFX 里邊包含證書和私鑰,可以用來生成,也可以通過證書和私鑰合成 PFX,都是可以的。