PKCS#1 與 PKCS#8 · 公開金鑰和私密金鑰

私密金鑰與公開金鑰格式轉換:PKCS#1 和 PKCS#8

在 PKCS#1 和 PKCS#8 之間轉換私密金鑰或公開金鑰。把 PEM 重寫成另一臺伺服器、負載平衡器或雲端 API 所需的結構。識別和轉換都在瀏覽器中完成。

僅在瀏覽器中轉換 · 不會上傳你的金鑰

貼上或上傳公開金鑰或私密金鑰。

識別到的 PEM 標頭會填入金鑰類型和目前格式。請選擇目標格式。如果無法識別目前格式,會把它視為另一種格式。轉換在此標籤頁中進行,清除或關閉頁面後金鑰會被丟棄。

接受未加密的 .key、.pem 或 .pub 檔案。

識別到的 PEM 標頭會填入金鑰類型。請選擇目標格式。

轉換後的金鑰將顯示在這裡

貼上一個 PEM 金鑰並選擇目標格式。已經是該格式的金鑰會原樣返回。

金鑰編碼

同一金鑰,不同的封裝。

雲端 API、Web 伺服器或較舊的工具可能只接受一種 PEM 標頭。轉換編碼後,你可以直接安裝已有的金鑰,而不必產生新的金鑰對並重新簽發憑證。

匹配所需的 PEM 標頭

在 BEGIN PRIVATE KEY 與 RSA PRIVATE KEY 或 EC PRIVATE KEY 之間互相轉換。

同樣支援公開金鑰

在 BEGIN PUBLIC KEY 和 BEGIN RSA PUBLIC KEY 之間轉換 RSA 公開金鑰。

金鑰材料保留在本地

解析和重寫都在目前瀏覽器標籤頁中完成。金鑰不會被上傳。

PKCS#1 與 PKCS#8

如何轉換金鑰格式。

使用完整的 PEM,包括 BEGIN 和 END 行。識別到標頭後會填入金鑰類型和目前格式。請自行選擇目標格式。

  1. 01

    新增金鑰

    貼上 PEM,或上傳未加密的 .key、.pem 或 .pub 檔案。

  2. 02

    選擇目標格式

    選擇 PKCS#1 或 PKCS#8。如果金鑰已經是該格式,結果仍是同一份 PEM。

  3. 03

    複製或下載結果

    輸出只保留在此標籤頁中。請用與原始金鑰相同的存取控制來儲存它。

PEM 標頭

哪種標頭對應哪種格式。

PKCS#8

BEGIN PRIVATE KEY
BEGIN PUBLIC KEY

私密金鑰使用 PrivateKeyInfo。公開金鑰使用 SubjectPublicKeyInfo,此轉換器把它視為 PKCS#8 公開金鑰形式。

PKCS#1

BEGIN RSA PRIVATE KEY
BEGIN EC PRIVATE KEY
BEGIN RSA PUBLIC KEY

EC PRIVATE KEY 是 SEC1 編碼。本頁寫出的唯一 PKCS#1 公開金鑰是 RSA PUBLIC KEY。

格式檢測

轉換器如何選擇轉換方向。

它會先讀取 PEM 標籤。識別到一個標頭後,會填入金鑰類型和目前格式。由你選擇結果應為 PKCS#1 還是 PKCS#8。

缺少標籤、標頭被截斷,或同一個輸入框中有兩把金鑰時,無法確定目前格式。選擇目標格式後,轉換器會把金鑰視為另一種格式。已經是目標格式的金鑰會原樣返回。

轉換會改變什麼

  • The PEM header and ASN.1 wrapper
  • Line wrapping of the Base64 body
  • Where an EC curve identifier is stored

轉換不會產生新的金鑰對,不會解密通行密碼,也不能證明憑證與金鑰匹配。

如何使用 OpenSSL 在 PKCS#1 和 PKCS#8 之間轉換。

如果金鑰已加密,或政策不允許使用瀏覽器工具,請在受信任的電腦上執行這些命令。

私密金鑰 PKCS#1 轉 PKCS#8

openssl pkcs8 -topk8 -nocrypt \
  -in private-key.pem -out private-key-pkcs8.pem

RSA 私密金鑰 PKCS#8 轉 PKCS#1

openssl rsa -in private-key.pem \
  -out private-key-pkcs1.pem

EC 私密金鑰 PKCS#8 轉 SEC1

openssl ec -in private-key.pem \
  -out private-key-sec1.pem

RSA 公開金鑰 SPKI 轉 PKCS#1

openssl rsa -pubin -in public-key.pem \
  -RSAPublicKey_out -out public-key-pkcs1.pem

支援的格式與限制。

貼上或上傳一份未加密的 PEM。私密金鑰可以是 PKCS#8、RSA PKCS#1 或 EC SEC1。RSA 公開金鑰可以是 SubjectPublicKeyInfo 或 RSAPublicKey。支援的 EC 曲線與憑證已使用的命名曲線一致,包括 P-256、P-384 和 P-521。

加密的私密金鑰、憑證、CSR 和 PKCS#12 包不在本頁範圍內。請用 OpenSSL 處理這些容器,如果仍需要不同的 PEM 標頭,再把提取出的金鑰拿到這裡轉換。

當檢測失敗時。

如果文字沒有 PEM 邊界、邊界被截斷,或同時包含公開金鑰和私密金鑰,就無法識別目前格式。選擇目標格式後,轉換器會假定金鑰使用另一種格式。標頭無法識別金鑰類型時,請自行設定。

手動選擇錯誤時會失敗,不會寫出金鑰。請檢查原始標頭,或先用 OpenSSL 移除通行密碼後再試。

相關金鑰工具

CSR 與私密金鑰比對工具

提交請求前,確認 CSR 和私密金鑰屬於同一金鑰對。

Check CSR & key

CSR 產生器

如果需要新的金鑰對而不是新的編碼,請在本地建立新的 CSR 和私密金鑰。

Generate CSR

PKCS 轉換常見問題

PKCS#1 與 PKCS#8 的常見問題。

PKCS#1 和 PKCS#8 有什麼區別?

PKCS#8 是通用的私密金鑰封裝,寫為 BEGIN PRIVATE KEY。這裡的 PKCS#1 指特定演算法的形式:BEGIN RSA PRIVATE KEY,或 SEC1 橢圓曲線金鑰的 BEGIN EC PRIVATE KEY。公開金鑰的通用形式是 SubjectPublicKeyInfo(BEGIN PUBLIC KEY)。本頁把它視為 PKCS#8 公開金鑰。PKCS#1 公開金鑰是 BEGIN RSA PUBLIC KEY。

把私密金鑰貼上到此轉換器是否安全?

轉換在瀏覽器本地進行。金鑰不會發送到我們的伺服器、不會被儲存,也不會寫入 URL。完成後請清空表單或關閉標籤頁。生產環境的金鑰請遵循組織的金鑰處理政策。

轉換器支援 RSA 和 EC 金鑰嗎?

私密金鑰可以是 RSA 或 ECDSA,包括憑證使用的 P-256、P-384 和 P-521 曲線。公開金鑰轉換針對 RSA。橢圓曲線公開金鑰已經使用 SubjectPublicKeyInfo,沒有 PKCS#1 PEM 形式。

可以轉換加密的私密金鑰嗎?

不會。此頁面不會索取或解密密碼。BEGIN ENCRYPTED PRIVATE KEY,以及帶有 Proc-Type: 4,ENCRYPTED 的 PEM 都會被拒絕。請在信任的電腦上使用本頁的 OpenSSL 指令,或建立暫時的未加密副本並立即刪除。

無法識別格式時會怎樣?

標準 PEM 標頭會填入金鑰類型和目前格式。由你選擇目標格式。如果標頭缺失、被截斷,或貼上了不止一個金鑰,請自行設定金鑰類型。此時會把目前格式視為另一種 PKCS 格式。已經是目標格式的金鑰會原樣返回。

轉換會改變金鑰對嗎?

不會。PKCS#1 和 PKCS#8 是同一份金鑰材料的兩種編碼。模數、指數和曲線參數保持不變,改變的只是 PEM 封裝。