openssl
名稱
openssl - OpenSSL 命令列程式
語法
openssl 指令 [ 選項 ... ] [ 參數 ... ]
openssl no-XXX [ 選項 ]
openssl -help | -version
說明
OpenSSL 是一個密碼學工具包,實作安全通訊協定層 (SSL) 和傳輸層安全性 (TLS) 網路協定以及它們所需的相關密碼學標準。
openssl 程式是一個命令列程式,用於從 shell 使用 OpenSSL 的 crypto 函式庫的各種密碼學函式。它可用於
o Creation and management of private keys, public keys and parameters
o Public key cryptographic operations
o Creation of X.509 certificates, CSRs and CRLs
o Calculation of Message Digests and Message Authentication Codes
o Encryption and Decryption with Ciphers
o SSL/TLS Client and Server Tests
o Handling of S/MIME signed or encrypted mail
o Timestamp requests, generation and verification
指令摘要
openssl 程式提供豐富多樣的指令(上述 「語法」 中的 指令)。每個指令可以有許多選項和引數參數,如上所示的 選項 和 參數。
大多數標準子指令都有詳細的文件和使用案例(例如 openssl-x509(1))。可以使用 openssl-list(1) 子指令來列出子指令。
指令 no-XXX 測試是否存在指定名稱的指令。如果不存在名為 XXX 的指令,它會傳回 0(成功)並印出 no-XXX;否則,它會傳回 1 並印出 XXX。在兩種情況下,輸出都會傳送到 stdout,而不會印出任何內容到 stderr。其他命令列引數總是會被忽略。由於每個密碼都有同名的指令,因此這為 shell 程式提供了一種簡單的方法,可以用來測試 openssl 程式中密碼的可用性。(no-XXX 無法偵測偽指令,例如 quit、list 或 no-XXX 本身。)
組態選項
許多指令會使用外部組態檔案作為部分或全部引數,並有一個 -config 選項來指定該檔案。檔案的預設名稱為 openssl.cnf,位於預設的憑證儲存區中,可以使用 -d 或 -a 選項透過 openssl-version(1) 指令來判斷。環境變數 OPENSSL_CONF 可用於指定不同的檔案位置或停用載入組態(使用空字串)。
在其他部分中,組態檔案可用於載入模組,並指定用於產生憑證和亂數的參數。有關詳細資料,請參閱 config(5)。
標準指令
- asn1parse
-
剖析 ASN.1 序列。
- ca
-
憑證授權 (CA) 管理。
- ciphers
-
密碼組描述決定。
- cms
-
CMS (加密訊息語法) 指令。
- crl
-
憑證吊銷清單 (CRL) 管理。
- crl2pkcs7
-
CRL 轉換為 PKCS#7。
- dgst
-
訊息摘要計算。MAC 計算已由 openssl-mac(1) 取代。
- dhparam
-
Diffie-Hellman 參數產生和管理。已由 openssl-genpkey(1) 和 openssl-pkeyparam(1) 取代。
- dsa
-
DSA 資料管理。
- dsaparam
-
DSA 參數產生和管理。已由 openssl-genpkey(1) 和 openssl-pkeyparam(1) 取代。
- ec
-
EC (橢圓曲線) 金鑰處理。
- ecparam
-
EC 參數操作和產生。
- enc
-
加密、解密和編碼。
- engine
-
引擎 (可載入模組) 資訊和操作。
- errstr
-
錯誤號碼轉換為錯誤字串。
- fipsinstall
-
FIPS 組態安裝。
- gendsa
-
從參數產生 DSA 私密金鑰。已由 openssl-genpkey(1) 和 openssl-pkey(1) 取代。
- genpkey
-
產生私密金鑰或參數。
- genrsa
-
產生 RSA 私密金鑰。已由 openssl-genpkey(1) 取代。
- help
-
顯示有關指令選項的資訊。
- info
-
顯示內建於 OpenSSL 函式庫中的各種資訊。
- kdf
-
金鑰衍生函數。
- list
-
列出演算法和功能。
- mac
-
訊息驗證碼計算。
- nseq
-
建立或檢查 Netscape 憑證序列。
- ocsp
-
線上憑證狀態通訊協定指令。
- passwd
-
產生雜湊密碼。
- pkcs12
-
PKCS#12 資料管理。
- pkcs7
-
PKCS#7 資料管理。
- pkcs8
-
PKCS#8 格式私密金鑰轉換指令。
- pkey
-
公開和私鑰管理。
- pkeyparam
-
公開金鑰演算法參數管理。
- pkeyutl
-
公開金鑰演算法密碼運算指令。
- prime
-
計算質數。
- rand
-
產生偽隨機位元組。
- rehash
-
建立符號連結到憑證和 CRL 檔案,這些檔案是以雜湊值命名。
- req
-
PKCS#10 X.509 憑證簽署要求 (CSR) 管理。
- rsa
-
RSA 金鑰管理。
- rsautl
-
RSA 指令,用於簽署、驗證、加密和解密。已由 openssl-pkeyutl(1) 取代。
- s_client
-
這實作了一個通用 SSL/TLS 伺服器,它可以建立與使用 SSL/TLS 通訊的遠端伺服器的透明連線。它僅供測試用途,只提供基本介面功能,但內部使用 OpenSSL ssl 函式庫的大部分功能。
- s_server
-
這實作了一個通用 SSL/TLS 伺服器,它接受使用 SSL/TLS 通訊的遠端客戶端的連線。它僅供測試用途,只提供基本介面功能,但內部使用 OpenSSL ssl 函式庫的大部分功能。它提供了一個用於測試 SSL 功能的命令列導向協定,以及一個簡單的 HTTP 回應功能,以模擬一個支援 SSL/TLS 的網路伺服器。
- s_time
-
SSL 連線計時器。
- sess_id
-
SSL 會話資料管理。
- smime
-
S/MIME 郵件處理。
- speed
-
演算法速度測量。
- spkac
-
SPKAC 列印和產生指令。
- srp
-
維護 SRP 密碼檔案。此指令已不建議使用。
- storeutl
-
列出和顯示憑證、金鑰、CRL 等的指令。
- ts
-
時間戳記授權指令。
- verify
-
X.509 憑證驗證。另請參閱 openssl-verification-options(1) 手冊頁面。
- version
-
OpenSSL 版本資訊。
- x509
-
X.509 憑證資料管理。
訊息摘要指令
- blake2b512
-
BLAKE2b-512 摘要
- blake2s256
-
BLAKE2s-256 摘要
- md2
-
MD2 摘要
- md4
-
MD4 摘要
- md5
-
MD5 摘要
- mdc2
-
MDC2 摘要
- rmd160
-
RMD-160 摘要
- sha1
-
SHA-1 摘要
- sha224
-
SHA-2 224 摘要
- sha256
-
SHA-2 256 摘要
- sha384
-
SHA-2 384 摘要
- sha512
-
SHA-2 512 摘要
- sha3-224
-
SHA-3 224 摘要
- sha3-256
-
SHA-3 256 摘要
- sha3-384
-
SHA-3 384 摘要
- sha3-512
-
SHA-3 512 摘要
- keccak-224
-
KECCAK 224 摘要
- keccak-256
-
KECCAK 256 摘要
- keccak-384
-
KECCAK 384 摘要
- keccak-512
-
KECCAK 512 摘要
- shake128
-
SHA-3 SHAKE128 摘要
- shake256
-
SHA-3 SHAKE256 摘要
- sm3
-
SM3 摘要
加密、解密和編碼命令
下列別名提供便利的存取方式,以使用最常用的編碼和密碼。
根據 OpenSSL 的組態和建置方式,這裡所列出的密碼可能不會全部存在。請參閱 openssl-enc(1) 以取得更多資訊。
- aes128、aes-128-cbc、aes-128-cfb、aes-128-ctr、aes-128-ecb、aes-128-ofb
-
AES-128 密碼
- aes192、aes-192-cbc、aes-192-cfb、aes-192-ctr、aes-192-ecb、aes-192-ofb
-
AES-192 密碼
- aes256、aes-256-cbc、aes-256-cfb、aes-256-ctr、aes-256-ecb、aes-256-ofb
-
AES-256 密碼
- aria128、aria-128-cbc、aria-128-cfb、aria-128-ctr、aria-128-ecb、aria-128-ofb
-
Aria-128 密碼
- aria192、aria-192-cbc、aria-192-cfb、aria-192-ctr、aria-192-ecb、aria-192-ofb
-
Aria-192 密碼
- aria256、aria-256-cbc、aria-256-cfb、aria-256-ctr、aria-256-ecb、aria-256-ofb
-
Aria-256 密碼
- base64
-
Base64 編碼
- bf、bf-cbc、bf-cfb、bf-ecb、bf-ofb
-
Blowfish 密碼
- camellia128、camellia-128-cbc、camellia-128-cfb、camellia-128-ctr、camellia-128-ecb、camellia-128-ofb
-
Camellia-128 密碼
- camellia192、camellia-192-cbc、camellia-192-cfb、camellia-192-ctr、camellia-192-ecb、camellia-192-ofb
-
Camellia-192 密碼
- camellia256、camellia-256-cbc、camellia-256-cfb、camellia-256-ctr、camellia-256-ecb、camellia-256-ofb
-
Camellia-256 密碼
- cast、cast-cbc
-
CAST 密碼
- cast5-cbc、cast5-cfb、cast5-ecb、cast5-ofb
-
CAST5 密碼
- chacha20
-
Chacha20 加密
- des、des-cbc、des-cfb、des-ecb、des-ede、des-ede-cbc、des-ede-cfb、des-ede-ofb、des-ofb
-
DES 加密
- des3、desx、des-ede3、des-ede3-cbc、des-ede3-cfb、des-ede3-ofb
-
三重 DES 加密
- idea、idea-cbc、idea-cfb、idea-ecb、idea-ofb
-
IDEA 加密
- rc2、rc2-cbc、rc2-cfb、rc2-ecb、rc2-ofb
-
RC2 加密
- rc4
-
RC4 加密
- rc5、rc5-cbc、rc5-cfb、rc5-ecb、rc5-ofb
-
RC5 加密
- seed、seed-cbc、seed-cfb、seed-ecb、seed-ofb
-
SEED 加密
- sm4、sm4-cbc、sm4-cfb、sm4-ctr、sm4-ecb、sm4-ofb
-
SM4 加密
選項
哪些選項可用取決於特定命令。本節說明一些具有常見行為的常見選項。
程式選項
可以在沒有指定命令的情況下指定這些選項,以取得說明或版本資訊。
- -help
-
提供所有選項的簡短摘要。如需更詳細的資訊,每個命令都支援 -help 選項。也接受 --help。
- -version
-
提供 openssl 程式版本的簡短摘要。如需更詳細的資訊,請參閱 openssl-version(1)。也接受 --version。
常見選項
- -help
-
如果選項帶有引數,也會提供引數的「類型」。
- --
-
這會終止選項清單。如果任何檔案名稱參數以減號開頭,這通常很有用
openssl verify [flags...] -- -cert1.pem...
格式選項
請參閱 openssl-format-options(1) 以取得手冊頁面。
密碼短語選項
請參閱 openssl-passphrase-options(1) 手冊頁面。
隨機狀態選項
在 OpenSSL 1.1.1 之前,應用程式通常會將隨機數產生器的狀態資訊儲存在啟動時載入並在退出時重新寫入的檔案中。在現代作業系統上,這通常不再必要,因為 OpenSSL 會從作業系統提供的受信任熵來源中自我播種。這些旗標仍支援特殊平台或可能需要它們的情況。
重複使用相同的種子檔案通常會出錯,而且每次使用 -rand 都應該搭配 -writerand。
- -rand files
-
包含用於設定亂數產生器的亂數資料之檔案或檔案。可指定多個檔案,並以作業系統相關字元分隔。MS-Windows 的分隔符號為
;
,OpenVMS 為,
,其他作業系統則為:
。指定多個檔案的另一種方式是重複此旗標,並使用不同的檔名。 - -writerand 檔案
-
結束時將設定資料寫入指定的 檔案。此檔案可於後續命令呼叫中使用。
憑證驗證選項
請參閱 openssl-verification-options(1) 手冊頁。
名稱格式選項
請參閱 openssl-namedisplay-options(1) 手冊頁。
TLS 版本選項
多個命令使用 SSL、TLS 或 DTLS。預設情況下,命令使用 TLS,且用戶端會提供支援的最低和最高通訊協定版本,而伺服器會選擇用戶端提供的且伺服器也支援的最高版本。
下列選項可限制使用的通訊協定版本,以及是否使用 TCP(SSL 和 TLS)或 UDP(DTLS)。請注意,視 OpenSSL 的建置方式而定,可能無法使用所有通訊協定和旗標。
- -ssl3、-tls1、-tls1_1、-tls1_2、-tls1_3、-no_ssl3、-no_tls1、-no_tls1_1、-no_tls1_2、-no_tls1_3
-
這些選項需要或停用指定的 SSL 或 TLS 通訊協定的使用。需要特定 TLS 版本時,只會提供或接受該版本。只能提供一個特定通訊協定,且無法與任何 no_ 選項結合使用。no_* 選項不適用於 s_time 和 ciphers 命令,但適用於 s_client 和 s_server 命令。
- -dtls、-dtls1、-dtls1_2
-
這些選項指定使用 DTLS 而非 TLS。使用 -dtls 時,用戶端會協商任何支援的 DTLS 通訊協定版本。使用 -dtls1 或 -dtls1_2 選項分別只支援 DTLS1.0 或 DTLS1.2。
引擎選項
- -engine id
-
載入由 id 識別的引擎,並使用其實作的所有方法(演算法、金鑰儲存等),除非在命令特定文件中有另行指定,或已設定為執行此動作,如 config(5) 中的「引擎設定」 所述。
當提供 -keyform engine 等選項時,引擎將用於以 -key 和類似選項指定的金鑰識別碼。
一個特殊情況是
loader_attic
引擎,它僅用於內部 OpenSSL 測試目的,並支援從檔案載入金鑰、參數、憑證和 CRL。當使用此引擎時,會透過此引擎讀取包含此類憑證的檔案。使用file:
架構是可選的;純文字檔案(路徑)名稱即可。
指定金鑰的選項,例如 -key 和類似選項,可以使用通用 OpenSSL 引擎金鑰載入 URI 架構 org.openssl.engine:
來擷取私密金鑰和公開金鑰。URI 語法如下,以簡化形式表示
org.openssl.engine:{engineid}:{keyid}
其中 {engineid}
是引擎的身分/名稱,而 {keyid}
是該引擎可接受的金鑰識別碼。例如,當使用介接至 PKCS#11 實作的引擎時,通用金鑰 URI 會類似這樣(這剛好是 OpenSC 中 PKCS#11 引擎的範例)
-key org.openssl.engine:pkcs11:label_some-private-key
作為第三個可能性,對於已實作自己的 OSSL_STORE_LOADER(3) 的引擎和提供者,不應需要 org.openssl.engine:
。對於已實作此類載入器的 PKCS#11 實作,應可直接使用 RFC 7512 中定義的 PKCS#11 URI
-key pkcs11:object=some-private-key;pin-value=1234
提供者選項
- -provider name
-
載入並初始化由 name 識別的提供者。name 也可能是提供者模組的路徑。在這種情況下,提供者名稱將是指定的路徑,而不仅仅是提供者模組名稱。相對路徑的詮釋取決於平台。設定的「MODULESDIR」路徑、OPENSSL_MODULES 環境變數或由 -provider-path 指定的路徑會附加到相對路徑。請參閱 provider(7) 以取得更詳細的說明。
- -provider-path path
-
指定要使用來尋找提供者的搜尋路徑。等效地,可以設定 OPENSSL_MODULES 環境變數。
- -propquery propq
-
指定從載入的提供者擷取演算法時要使用的屬性查詢子句。請參閱 property(7) 以取得更詳細的說明。
環境
OpenSSL 函式庫可以從環境中取得一些設定參數。以下列出其中一些變數。有關特定命令的資訊,請參閱 openssl-engine(1)、openssl-rehash(1) 和 tsget(1)。
有關在組態中使用環境變數的資訊,請參閱 config(5) 中的「ENVIRONMENT」。
有關查詢或指定 CPU 架構旗標的資訊,請參閱 OPENSSL_ia32cap(3) 和 OPENSSL_s390xcap(3)。
有關 OpenSSL 函式庫使用的所有環境變數的資訊,請參閱 openssl-env(7)。
- OPENSSL_TRACE=名稱[,...]
-
依名稱啟用 OpenSSL 函式庫的追蹤輸出。只有在您深入了解 OpenSSL 內部結構時,此輸出才有意義。此外,如果 OpenSSL 是在沒有追蹤支援的情況下建置的,它可能完全不會提供任何輸出。
值是一個以逗號分隔的名稱清單,其中包含下列可用名稱
- TRACE
-
追蹤 OpenSSL 追蹤 API 本身。
- INIT
-
追蹤 OpenSSL 函式庫的初始化和清理。
- TLS
-
追蹤 TLS/SSL 協定。
- TLS_CIPHER
-
追蹤 TLS/SSL 協定使用的密碼。
- CONF
-
顯示有關提供者和引擎組態的詳細資料。
- ENGINE_TABLE
-
RSA、DSA(等)程式碼用於選擇已註冊的 ENGINE、快取預設值和功能參考(等)的函式將產生除錯摘要。
- ENGINE_REF_COUNT
-
ENGINE 結構中的參考計數將受到監控,並為每個變更產生一行。
- PKCS5V2
-
追蹤 PKCS#5 v2 金鑰產生。
- PKCS12_KEYGEN
-
追蹤 PKCS#12 金鑰產生。
- PKCS12_DECRYPT
-
追蹤 PKCS#12 解密。
- X509V3_POLICY
-
在 X.509 v3 政策評估期間,在不同時間點產生完整的政策樹。
- BN_CTX
-
追蹤 BIGNUM 背景作業。
- CMP
-
追蹤 CMP 客戶端和伺服器活動。
- STORE
-
追蹤 STORE 作業。
- DECODER
-
追蹤解碼器作業。
- ENCODER
-
追蹤編碼器作業。
- REF_COUNT
-
追蹤減少特定 ASN.1 結構參考。
- HTTP
-
追蹤 HTTP 客戶端和伺服器,例如傳送和接收的訊息。
另請參閱
openssl-asn1parse(1)、openssl-ca(1)、openssl-ciphers(1)、openssl-cms(1)、openssl-crl(1)、openssl-crl2pkcs7(1)、openssl-dgst(1)、openssl-dhparam(1)、openssl-dsa(1)、openssl-dsaparam(1)、openssl-ec(1)、openssl-ecparam(1)、openssl-enc(1)、openssl-engine(1)、openssl-errstr(1)、openssl-gendsa(1)、openssl-genpkey(1)、openssl-genrsa(1)、openssl-kdf(1)、openssl-list(1)、openssl-mac(1)、openssl-nseq(1)、openssl-ocsp(1)、openssl-passwd(1)、openssl-pkcs12(1)、openssl-pkcs7(1)、openssl-pkcs8(1)、openssl-pkey(1)、openssl-pkeyparam(1)、openssl-pkeyutl(1)、openssl-prime(1)、openssl-rand(1)、openssl-rehash(1)、openssl-req(1)、openssl-rsa(1)、openssl-rsautl(1)、openssl-s_client(1)、openssl-s_server(1)、openssl-s_time(1)、openssl-sess_id(1)、openssl-smime(1)、openssl-speed(1)、openssl-spkac(1)、openssl-srp(1)、openssl-storeutl(1)、openssl-ts(1)、openssl-verify(1)、openssl-version(1)、openssl-x509(1)、config(5)、crypto(7)、openssl-env(7)、ssl(7)、x509v3_config(5)
歷史
list -XXX-algorithms 選項於 OpenSSL 1.0.0 中新增;有關其他指令可用性的說明,請參閱其個別手冊頁面。
-issuer_checks 選項已於 OpenSSL 1.1.0 中標示為已棄用,且會被靜默忽略。
-xcertform 和 -xkeyform 選項自 OpenSSL 3.0 起已過時,且不具任何作用。
互動模式,可透過執行 openssl
而沒有其他參數來呼叫,已於 OpenSSL 3.0 中移除,且執行該程式而沒有參數現在等同於 openssl help
。
版權
Copyright 2000-2023 The OpenSSL Project Authors。保留所有權利。
根據 Apache 授權條款 2.0(「授權條款」)授權。您不得在不遵守授權條款的情況下使用此檔案。您可以在原始程式碼散發中的 LICENSE 檔案或 https://www.openssl.org/source/license.html 取得一份副本。