全部產品
Search
文件中心

Certificate Management Service:常見SSL認證有哪些格式?

更新時間:Oct 21, 2025

本文系統介紹常見認證檔案格式與 SSL 憑證檔案相關概念,提供格式識別方法、主流 Web 服務器的認證格式選型,以及可直接複用的格式轉換命令。

常見認證檔案格式

不同伺服器對認證格式的要求各不相同,具體可參見主流Web伺服器憑證格式選型。推薦在阿里雲數位憑證管理服務購買並簽發認證後,根據伺服器類型下載對應格式的認證檔案,詳情可參見下載SSL認證

文檔副檔名

內容格式

描述

.pem

文字格式設定 (PEM)

通用副檔名,可存放認證、私密金鑰、憑證鏈結或它們的組合。具體內容需查看檔案中的BEGIN/END標記。

.key

文字格式設定 (PEM) 或二進位格式 (DER)

通常用於存放私密金鑰檔案。

.crt.cer

文字格式設定 (PEM) 或二進位格式 (DER)

通常只包含認證(公開金鑰和身份資訊)、不包含私密金鑰。可以是單個伺服器憑證,也可以是包含中間認證的憑證鏈結檔案。

.pfx, .p12

二進位格式 (PKCS#12)

可以同時包含伺服器憑證、私密金鑰和憑證鏈結,通常帶有密碼保護。.pfx在Windows中更常見,.p12是標準副檔名。

.jks

二進位格式 (JKS)

Java 平台專有的密鑰庫(Keystore)格式,用於儲存體金鑰條目(私密金鑰和憑證鏈結)和信任條目(CA 憑證)。自 Java 9 起,PKCS#12 已成為預設的推薦格式。

主流Web伺服器憑證格式選型

伺服器類型

推薦格式

所需檔案

說明

Nginx, Apache

PEM

認證檔案 (.pem/.crt)
私密金鑰檔案 (.key)

需要分別配置認證和私密金鑰檔案。認證檔案應為包含伺服器憑證和所有中間認證的完整憑證鏈結。

Tomcat, JBoss, WebLogic

PFX/P12 (PKCS#12)

認證庫檔案 (.pfx/.p12)

Java應用伺服器推薦使用標準的PKCS#12格式。若仍在使用舊的JKS格式,建議遷移。

IIS

PFX

認證庫檔案 (.pfx)

Windows IIS伺服器的標準格式。通過匯入一個帶密碼的 PFX 檔案即可完成認證與私密金鑰的部署。

IBM WebSphere

KDB

認證庫檔案 (.kdb)

使用 IBM 官方提供的 iKeyman 工具進行管理的專用格式。

對於 Nginx/Apache,如果 CA 提供了獨立的中間認證檔案,需要將伺服器憑證和中間認證合并,然後再部署產生的完整憑證鏈結檔案。通常無需將根CA認證包含在部署的鏈檔案中,僅拼接伺服器憑證與中間認證即可。

# 在 Linux/macOS 的終端中執行
cat server.crt chain.crt > fullchain.crt

SSL 憑證檔案相關概念

SSL 憑證檔案涉及以下四個核心概念:

  • 認證組件:構成 SSL 安全通訊的核心要素。

    • SSL 憑證:包含網域名稱、公開金鑰、頒發者和有效期間等資訊的身份證明。

    • 私密金鑰:與認證中的公開金鑰形成金鑰組,用於身份認證和加密通訊。私密金鑰必須嚴格保密。

    • 憑證鏈結:從伺服器憑證到根CA認證的完整信任路徑,包含一個或多個中間CA認證。

  • 編碼方式:將內容對象序列化為資料流的方式。

    • PEM (Privacy-Enhanced Mail):文字格式設定。採用 Base 64 編碼,並由 -----BEGIN...----------END...----- 標記包裹。一個 PEM 檔案可包含認證、私密金鑰或二者的組合。

    • DER (Distinguished Encoding Rules):二進位格式。ASN.1 的二進位編碼錶示。PEM 通常是對 DER 資料進行 Base 64 編碼並添加 BEGIN/END 標記後的文本封裝。DER 檔案體積比 PEM 更小,但不便於直接用文字編輯器閱讀。

  • 容器格式:用於打包一個或多個認證組件的標準。

    • PFX / P12 (PKCS#12):二進位格式的認證庫。它將伺服器憑證、私密金鑰以及中間憑證鏈結打包在一個經過密碼保護的加密檔案中。這是在伺服器(尤其是 Windows IIS)之間遷移認證或為Java應用伺服器提供認證時的首選格式,因為它簡化了部署流程。

    • JKS (Java Keystore):Java 專用的認證庫格式。雖然仍被一些舊版 Java 應用使用,但業界已推薦使用更通用的 PKCS#12 格式。

  • 副檔名:檔案的尾碼名,如 .pem, .crt, .key, .pfx

    說明

    副檔名僅為一種命名規範,並不可靠。例如,.crt 檔案可能是 PEM 編碼,也可能是 DER 編碼。必須通過內容來判斷其實際格式。

如何識別認證檔案格式

部署前,請通過以下方法準確識別認證檔案格式,以避免部署失敗。

通過常值內容識別 (PEM 格式)

使用文字編輯器開啟檔案。如果看到以下格式的 ASCII 字元塊,則為 PEM 編碼格式。否則請使用 OpenSSL 工具識別。

-----BEGIN CERTIFICATE-----
MIIE5zCCA8+gAwIBAgIQN+whYc2BgzAogau0dc3PtzANBgkqh......
-----END CERTIFICATE-----

常見的標記包括:

  • -----BEGIN CERTIFICATE-----:表示這是一個認證檔案。

  • -----BEGIN PRIVATE KEY----------BEGIN RSA PRIVATE KEY-----:表示這是一個私密金鑰檔案。

  • -----BEGIN ENCRYPTED PRIVATE KEY-----:表示這是一個加密的私密金鑰檔案。

  • -----BEGIN EC PRIVATE KEY-----:表示這是一個橢圓曲線(EC, Elliptic Curve)私密金鑰檔案。

使用 OpenSSL 工具識別

對於無法通過文本查看的二進位檔案,或需要擷取詳細資料時,可使用 OpenSSL 命令列工具識別。

  • 識別 PEM 格式的認證檔案。
    檔案內容以 -----BEGIN CERTIFICATE----- 開頭,即為 PEM 編碼的認證。

    # 查看 PEM 認證的詳細資料
    openssl x509 -in certificate.crt -noout -text
  • 識別 PEM 格式的私密金鑰檔案。
    檔案內容以 -----BEGIN PRIVATE KEY----------BEGIN RSA PRIVATE KEY----------BEGIN ENCRYPTED PRIVATE KEY----------BEGIN EC PRIVATE KEY----- 開頭,即為 PEM 編碼的私密金鑰。

    # 查看 PEM 私密金鑰的詳細資料
    openssl pkey -in private.key -noout -text
  • 識別 PFX/P12 認證庫。
    該格式為二進位格式,包含認證和私密金鑰。

    # 查看 PFX 檔案的內容,會提示輸入密碼
    openssl pkcs12 -in keystore.pfx -info -noout
  • 識別 DER 格式的認證。

    DER 是認證的二進位編碼格式,檔案無法直接用文字編輯器查看。常見於 Java 應用、移動平台以及 Windows 憑證存放區。

    # 查看 DER 認證的詳細資料
    openssl x509 -in certificate.der -inform der -noout -text

認證格式轉換

可以通過以下兩種方式進行認證格式轉換:

  • 使用數位憑證管理服務提供的轉換工具:其提供了便捷的認證工具,支援 PEM、PFX、JKS 等格式的快速轉換,無需命令列操作。

  • 使用 OpenSSL 命令列工具:OpenSSL 是最通用的認證處理工具,適用於任何作業系統,並能提供高度定製化的轉換選項。

使用數位憑證管理服務提供的轉換工具

阿里雲數位憑證管理服務提供SSL認證格式轉換工具,支援PEM與PFX、PEM與JKS、PEM與PKCS8格式間的轉換。具體操作,請參見認證工具

使用 OpenSSL 命令列工具

  • 將 PEM 轉換為 PFX (用於 IIS, Tomcat)

    此命令將一個認證檔案 (.crt)、一個私密金鑰檔案 (.key) 以及一個可選的憑證鏈結檔案合并為一個受密碼保護的 PFX 檔案。

    # 僅包含伺服器憑證和私密金鑰時執行
    openssl pkcs12 -export -out server.pfx -inkey private.key -in server.crt
    
    # 包含完整憑證鏈結時執行
    openssl pkcs12 -export -out server.pfx -inkey private.key -in server.crt -certfile chain.crt
  • 將 PFX 拆分為 PEM (用於 Nginx, Apache)

    此命令從一個 PFX 檔案中提取出認證(包含憑證鏈結)和私密金鑰,產生多個獨立的 PEM 檔案。

    # 1. 提取帶密碼保護的私密金鑰
    openssl pkcs12 -in server.pfx -nocerts -out server.encrypted.key
    
    # 2. 提取伺服器葉子認證(不含CA鏈)
    openssl pkcs12 -in server.pfx -clcerts -nokeys -out server.crt
    
    # 3. 提取中間CA認證(註:通常不需要包含根CA認證)
    openssl pkcs12 -in server.pfx -cacerts -nokeys -out chain.crt
    
    # 4.(可選)去除私密金鑰密碼保護,便於Nginx/Apache非互動啟動
    openssl pkey -in server.encrypted.key -out private.key
    
    # 5.(可選)拼接完整憑證鏈結檔案,供Nginx/Apache使用
    # 順序:先伺服器憑證,再中間認證(若有多個中間認證則按鏈順序依次拼接)
    # 注意:如果chain.crt不存在(PFX中沒有中間認證),則跳過此步驟
    cat server.crt chain.crt > fullchain.crt
    說明

    最終產生的 private.key 是一個無密碼保護的私密金鑰檔案,可以直接用於伺服器配置。請確保其檔案許可權得到嚴格的控制(例如 chmod 400 private.key,僅檔案所有者可讀)。

    當存在憑證鏈結且拼接完整憑證鏈結檔案後,部署時參考如下設定:

    • Nginx :設定 ssl_certificatefullchain.crt檔案地址,ssl_certificate_keyprivate.key檔案地址。

    • Apache:設定 SSLCertificateFilefullchain.crt 檔案地址(適用於Apache 2.4.8及以上版本),SSLCertificateKeyFileprivate.key 檔案地址。對於2.4.8之前的舊版本Apache,需要將中間憑證鏈結單獨配置在 SSLCertificateChainFile 指令中。

  • 在 DER 和 PEM 之間轉換

    DER 是 ASN.1 的二進位編碼,PEM 是對 DER 的 Base64 封裝並附帶 BEGIN/END 標記。兩者內容等價,僅編碼形式不同。

    # DER 轉 PEM
    openssl x509 -inform der -in certificate.cer -out certificate.pem
    
    # PEM 轉 DER
    openssl x509 -inform pem -in certificate.pem -outform der -out certificate.der
  • 將 JKS 轉換為 PFX/P12 (推薦的遷移路徑) 如果仍在使用舊的 JKS 認證庫,建議使用 Java 的 keytool 工具將其轉換為更通用的 PFX/P12 格式。

    keytool -importkeystore -srckeystore keystore.jks -srcstoretype JKS -destkeystore keystore.p12 -deststoretype PKCS12
    說明

    此命令會將 keystore.jks 中的所有條目遷移到新的 keystore.p12 檔案中。如果您只想遷移特定的條目,可以附加 -srcalias "your_alias"-destalias "your_alias" 參數。執行過程中,會提示您輸入目標密鑰庫(PFX/P12)的密碼和源密鑰庫(JKS)的密碼。