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
- -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(預設值)、uncompressed 和 hybrid。有關點轉換格式的更多資訊,請閱讀 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 取得一份副本。