在電腦保安和證書管理領域,PEM 檔案、CRT 檔案和 JKS 檔案是常用的幾種檔案格式,它們各自有不同的用途和特點。以下是對它們的詳細解釋,以及其他常見的檔案格式和 JDK 的 jre/lib/security/cacerts
檔案的說明。
PEM 檔案
PEM (Privacy Enhanced Mail) 是一種 Base64 編碼的檔案格式,常用於儲存證書、金鑰和其他加密資料。PEM 檔案通常以 .pem
、.crt
、.cer
、.key
等副檔名結尾。
- PEM 檔案內容:包含
-----BEGIN
和-----END
標籤,標籤中間是 Base64 編碼的資料。 - 用途:常用於證書和金鑰的傳輸和儲存,特別是在 UNIX/Linux 系統上。
CRT 檔案
CRT (Certificate) 檔案通常是指以 .crt
副檔名結尾的證書檔案。
- CRT 檔案內容:可以是 PEM 編碼(Base64 編碼)或 DER 編碼(二進位制編碼)。
- 用途:儲存 X.509 數字證書,通常包含公鑰。
JKS 檔案
JKS (Java KeyStore) 是 Java 特有的一種檔案格式,用於儲存加密金鑰和證書鏈。
- JKS 檔案內容:二進位制格式,包含一個或多個金鑰和證書條目。
- 用途:用於 Java 應用程式中的安全配置,比如 SSL/TLS 連線的配置。
檔案格式之間的關係
- PEM 和 CRT:PEM 是一種編碼格式,CRT 是一種檔案型別。一個 CRT 檔案可以是 PEM 編碼的,包含證書的 Base64 編碼資料。
- PEM 和 JKS:PEM 檔案和 JKS 檔案可以互相轉換。比如,一個 PEM 編碼的證書和金鑰可以被匯入到 JKS 檔案中,或者從 JKS 檔案中匯出。
- CRT 和 JKS:CRT 檔案中的證書可以被匯入到 JKS 檔案中,通常透過中間格式(如 PKCS12)來實現。
其他常見的檔案格式
- DER (Distinguished Encoding Rules):二進位制編碼的證書檔案,副檔名通常為
.der
或.cer
。 - PFX / P12 (PKCS#12):一種用於儲存證書鏈和私鑰的檔案格式,副檔名通常為
.pfx
或.p12
。 - P7B (PKCS#7):一種用於儲存證書或證書鏈的檔案格式,副檔名通常為
.p7b
或.p7c
。 - KEY:用於儲存私鑰的檔案,通常是 PEM 編碼的,以
.key
結尾。
JDK 的 jre/lib/security/cacerts
檔案
JDK 的 jre/lib/security/cacerts
檔案是一個預設的 Java 信任庫(truststore),用於儲存受信任的根證書。這些根證書通常由權威 CA(證書頒發機構)簽發,用於驗證 SSL/TLS 連線中的證書鏈。
- 型別:JKS(Java KeyStore)檔案。
- 用途:為 Java 應用程式提供一個預先配置的信任庫,包含許多常見的 CA 證書。
- 管理:可以使用
keytool
命令來檢視、新增或刪除cacerts
檔案中的證書。
總結
- PEM 檔案:常用於儲存證書和金鑰的 Base64 編碼格式檔案。
- CRT 檔案:儲存證書的檔案,可以是 PEM 編碼或 DER 編碼。
- JKS 檔案:Java 特有的金鑰庫檔案,儲存加密金鑰和證書鏈。
- 其他檔案格式:包括 DER、PFX/P12、P7B 和 KEY 檔案等。
- JDK 的
cacerts
檔案:一個包含受信任的根證書的 JKS 檔案,用於 Java 應用程式的 SSL/TLS 連線驗證。