OpenSSL

密碼學與 SSL/TLS 工具組

openssl-pkey

名稱

openssl-pkey - 公開或私人金鑰處理指令

語法

openssl pkey [-help] [-engine id] [-provider name] [-provider-path path] [-propquery propq] [-check] [-pubcheck] [-in filename|uri] [-inform DER|PEM|P12|ENGINE] [-passin arg] [-pubin] [-out filename] [-outform DER|PEM] [-cipher] [-passout arg] [-traditional] [-pubout] [-noout] [-text] [-text_pub] [-ec_conv_form arg] [-ec_param_enc arg]

說明

此指令處理公開或私人金鑰。它們可以在各種格式之間轉換,並列印其組成部分。

選項

一般選項

-help

列印使用訊息。

-engine id

請參閱 openssl(1) 中的「引擎選項」。此選項已棄用。

-provider name
-provider-path path
-propquery propq

請參閱 openssl(1) 中的「提供者選項」provider(7)property(7)

-check

此選項檢查公開和私人組成部分的金鑰配對一致性。

-pubcheck

此選項檢查公開金鑰或金鑰配對公開組成部分的正確性。

輸入選項

-in filename|uri

此選項指定要從中讀取金鑰的輸入,如果未指定此選項,則為標準輸入。如果金鑰輸入已加密且未提供 -passin,系統會提示輸入密碼。

-inform DER|PEM|P12|ENGINE

金鑰輸入格式;預設未指定。有關詳細資訊,請參閱 openssl-format-options(1)

-passin arg

金鑰輸入的密碼來源。

有關 arg 格式的詳細資訊,請參閱 openssl-passphrase-options(1)

-pubin

預設情況下,會從輸入中讀取私人金鑰。使用此選項,會讀取公開金鑰。如果輸入不包含公開金鑰,但包含私人金鑰,則會使用其公開部分。

輸出選項

-out filename

如果未指定此選項,這會指定用於儲存已編碼和/或標準輸出的金鑰或標準輸出的輸出檔名。如果設定任何密碼選項,但未提供 -passout,系統會提示輸入密碼。輸出檔名不應與輸入檔名相同。

-outform DER|PEM

金鑰輸出格式;預設為 PEM。有關詳細資訊,請參閱 openssl-format-options(1)

-cipher

使用提供的密碼對 PEM 編碼的私密金鑰進行加密。任何 EVP_get_cipherbyname() 接受的演算法名稱都是可以接受的,例如 aes128。DER 輸出不支援加密。

-passout arg

輸出檔案的密碼來源。

有關 arg 格式的詳細資訊,請參閱 openssl-passphrase-options(1)

-traditional

通常,私密金鑰會使用標準格式撰寫:這是 PKCS#8 格式,並使用適當的加密演算法(如果有的話)。如果指定 -traditional 選項,則會改用較舊的「傳統」格式。

-pubout

預設會輸出私密金鑰和公開金鑰;此選項會將輸出限制為公開元件。如果輸入是公開金鑰,則會自動設定此選項。

-text 結合使用時,這等同於 -text_pub

-noout

不要以編碼形式輸出金鑰。

-text

以純文字輸出各種金鑰元件(可能除了 PEM 編碼格式之外)。這無法與 DER 格式的編碼輸出結合使用。

-text_pub

僅以文字格式輸出公開金鑰元件(也適用於私密金鑰)。這無法與 DER 格式的編碼輸出結合使用。

-ec_conv_form arg

此選項僅適用於基於橢圓曲線的金鑰。

這會指定如何將橢圓曲線上的點轉換為八位元組字串。可能的數值有:compressed(預設值)、uncompressedhybrid。有關點轉換格式的更多資訊,請閱讀 X9.62 標準。注意由於專利問題,compressed 選項在預設情況下會停用二進位曲線,並可以在編譯時定義預處理器巨集 OPENSSL_EC_BIN_PT_COMP 來啟用。

-ec_param_enc arg

此選項僅適用於基於橢圓曲線的公開金鑰和私密金鑰。

這會指定如何編碼橢圓曲線參數。可能的數值有:named_curve,亦即 ec 參數由 OID 指定,或 explicit,其中 ec 參數明確給出(請參閱 RFC 3279 以取得 EC 參數結構的定義)。預設值為 named_curve注意 RFC 3279 中指定的 implicitlyCA 選項目前尚未在 OpenSSL 中實作。

範例

若要移除私密金鑰的密碼

openssl pkey -in key.pem -out keyout.pem

使用三重 DES 加密私鑰

openssl pkey -in key.pem -des3 -out keyout.pem

將私鑰從 PEM 轉換為 DER 格式

openssl pkey -in key.pem -outform DER -out keyout.der

將私鑰的組成部分列印到標準輸出

openssl pkey -in key.pem -text -noout

將私鑰的公開組成部分列印到標準輸出

openssl pkey -in key.pem -text_pub -noout

僅輸出私鑰的公開部分

openssl pkey -in key.pem -pubout -out pubkey.pem

將 EC 參數編碼變更為 明確

openssl pkey -in key.pem -ec_param_enc explicit -out keyout.pem

將 EC 點轉換形式變更為 壓縮

openssl pkey -in key.pem -ec_conv_form compressed -out keyout.pem

另請參閱

openssl(1)openssl-genpkey(1)openssl-rsa(1)openssl-pkcs8(1)openssl-dsa(1)openssl-genrsa(1)openssl-gendsa(1)

歷程

-engine 選項已在 OpenSSL 3.0 中棄用。

版權所有 2006-2023 OpenSSL 專案作者。保留所有權利。

根據 Apache 許可證 2.0 版(「許可證」)授權。您不得使用此檔案,除非符合許可證。您可以在原始程式碼散佈中的 LICENSE 檔案或 https://www.openssl.org/source/license.html 取得一份副本。