网络安全 / crt、pem、pfx、cer、key 作用及区别
一、編碼格式
同樣的 X.509 證書,可能有不同的編碼格式,目前有以下兩種編碼格式。
1、PEM?- Privacy Enhanced Mail
打開看文本格式,以“-----BEGIN...”開頭,“-----END...”結尾,內容是 BASE64 編碼。
查看 PEM 格式證書的信息:openssl x509 -in certificate.pem -text -noout 。
Apache 和 UNIX 服務器偏向于使用這種編碼格式。
2、DER?- Distinguished Encoding Rules
打開看是二進制格式,不可讀。
查看 DER 格式證書的信息:openssl x509 -in certificate.der?-inform der?-text -noout 。
Java 和 Windows 服務器偏向于使用這種編碼格式。
二、相關的文件擴展名
這是比較誤導人的地方,雖然我們已經知道有 PEM 和 DER 這兩種編碼格式,但文件擴展名并不一定就叫“PEM”或者“DER”,常見的擴展名除了 PEM 和 DER 還有以下這些,它們除了編碼格式可能不同之外,內容也有差別,但大多數都能相互轉換編碼格式。
1、CRT
CRT 應該是 certificate 的三個字母,其實還是證書的意思。常見于 UNIX 系統,有可能是 PEM 編碼,也有可能是 DER 編碼,大多數應該是 PEM 編碼,相信你已經知道怎么辨別。
2、CER
還是 certificate,還是證書。常見于 Windows 系統,同樣的可能是 PEM 編碼,也可能是 DER 編碼,大多數應該是 DER 編碼。
3、KEY
通常用來存放一個公鑰或者私鑰,并非 X.509 證書。編碼同樣的,可能是 PEM,也可能是 DER。
查看 KEY 的辦法:openssl rsa -in mykey.key -text -noout?? 。
如果是 DER 格式的話,同理應該這樣了:openssl rsa -in mykey.key -text -noout?-inform der 。
4、CSR
Certificate,Signing Request,即證書簽名請求。這個并不是證書,而是向權威證書頒發機構獲得簽名證書的申請,其核心內容是一個公鑰(當然還附帶了一些別的信息)。在生成這個申請的時候,同時也會生成一個私鑰,私鑰要自己保管好。做過 iOS APP 的朋友都應該知道是,怎么向蘋果申請開發者證書的吧。
查看的辦法:openssl req -noout -text -in my.csr (如果是 DER 格式的話照舊加上 -inform der,這里不寫了)。
5、PFX/P12
predecessor of PKCS#12,對 unix 服務器來說,一般 CRT 和 KEY 是分開存放在不同文件中的,但 Windows 的 IIS 則將它們存在一個 PFX 文件中,(因此這個文件包含了證書及私鑰)這樣會不會不安全?應該不會,PFX 通常會有一個“提取密碼”,你想把里面的東西讀取出來的話,它就要求你提供提取密碼,PFX 使用的時 DER 編碼,如何把 PFX 轉換為 PEM 編碼?
openssl pkcs12 -in for-iis.pfx -out for-iis.pem -nodes
這個時候會提示你輸入提取代碼,for-iis.pem 就是可讀的文本。
生成 pfx 的命令類似這樣:openssl pkcs12 -export -in certificate.crt?-inkey privateKey.key?-out certificate.pfx?-certfile CACert.crt
其中 CACert.crt 是 CA(權威證書頒發機構)的根證書,有的話也通過 -certfile 參數一起帶進去。這么看來,PFX 其實是個證書密鑰庫。
三、自己的理解
PEM 和 DER是不同的編碼方式,PEM在 linux 上常用,DER 在 window 上常用,可以相互轉換。
在 linux 上常用 crt 和 key 倆文件,在 window 常用 PFX,PFX 里邊包含證書和私鑰,可以用來生成,也可以通過證書和私鑰合成 PFX,都是可以的。
?
轉載于:https://www.cnblogs.com/workharder/p/13051052.html
?
(SAW:Game Over!)
總結
以上是生活随笔為你收集整理的网络安全 / crt、pem、pfx、cer、key 作用及区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cpp / 空指针对象调用函数的不同结果
- 下一篇: 多进程/多线程同时向一个文件中写入日志如