SSL 證書格式普及,PEM、CER、JKS、PKCS12
在我們收到的郵件中,有許多朋友諮詢:你們這下載下來的證書是 PEM 格式的,但我的伺服器不是用這種格式的,怎麼辦?那本篇文章就是來個大家普及一下證書的格式。
是的,根據不同的伺服器以及伺服器的版本,我們需要用到不同的證書格式,就市面上主流的伺服器來說,大概有以下格式:
- .DER .CER,檔案是二進位制格式,只儲存證書,不儲存私鑰。
- .PEM,一般是文字格式,可儲存證書,可儲存私鑰。
- .CRT,可以是二進位制格式,可以是文字格式,與 .DER 格式相同,不儲存私鑰。
- .PFX .P12,二進位制格式,同時包含證書和私鑰,一般有密碼保護。
- .JKS,二進位制格式,同時包含證書和私鑰,一般有密碼保護。
DER
該格式是二進位制檔案內容,Java 和 Windows 伺服器偏向於使用這種編碼格式。
OpenSSL 檢視
openssl x509 -in certificate.der -inform der -text -noout
轉換為 PEM:
openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
PEM
Privacy Enhanced Mail,一般為文字格式,以-----BEGIN...
開頭,以-----END...
結尾。中間的內容是 BASE64 編碼。這種格式可以儲存證書和私鑰,有時我們也把PEM 格式的私鑰的字尾改為 .key 以區別證書與私鑰。具體你可以看檔案的內容。
這種格式常用於 Apache 和 Nginx 伺服器。
OpenSSL 檢視:
openssl x509 -in certificate.pem -text -noout
轉換為 DER:
openssl x509 -in cert.crt -outform der -out cert.der
CRT
Certificate 的簡稱,有可能是 PEM 編碼格式,也有可能是 DER 編碼格式。如何檢視請參考前兩種格式。
PFX
Predecessor of PKCS#12,這種格式是二進位制格式,且證書和私鑰存在一個 PFX 檔案中。一般用於 Windows 上的 IIS 伺服器。改格式的檔案一般會有一個密碼用於保證私鑰的安全。
OpenSSL 檢視:
openssl pkcs12 -in for-iis.pfx
轉換為 PEM:
openssl pkcs12 -in for-iis.pfx -out for-iis.pem -nodes
JKS
Java Key Storage,很容易知道這是 JAVA 的專屬格式,利用 JAVA 的一個叫keytool
的工具可以進行格式轉換。一般用於 Tomcat 伺服器。
你可以到這裡進行格式轉換:ofollow,noindex" target="_blank">https://myssl.com/cert_convert.html