OpenSSL

密碼學和 SSL/TLS 工具包

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 無法偵測偽指令,例如 quitlistno-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) 以取得更多資訊。

aes128aes-128-cbcaes-128-cfbaes-128-ctraes-128-ecbaes-128-ofb

AES-128 密碼

aes192aes-192-cbcaes-192-cfbaes-192-ctraes-192-ecbaes-192-ofb

AES-192 密碼

aes256aes-256-cbcaes-256-cfbaes-256-ctraes-256-ecbaes-256-ofb

AES-256 密碼

aria128aria-128-cbcaria-128-cfbaria-128-ctraria-128-ecbaria-128-ofb

Aria-128 密碼

aria192aria-192-cbcaria-192-cfbaria-192-ctraria-192-ecbaria-192-ofb

Aria-192 密碼

aria256aria-256-cbcaria-256-cfbaria-256-ctraria-256-ecbaria-256-ofb

Aria-256 密碼

base64

Base64 編碼

bfbf-cbcbf-cfbbf-ecbbf-ofb

Blowfish 密碼

camellia128camellia-128-cbccamellia-128-cfbcamellia-128-ctrcamellia-128-ecbcamellia-128-ofb

Camellia-128 密碼

camellia192camellia-192-cbccamellia-192-cfbcamellia-192-ctrcamellia-192-ecbcamellia-192-ofb

Camellia-192 密碼

camellia256camellia-256-cbccamellia-256-cfbcamellia-256-ctrcamellia-256-ecbcamellia-256-ofb

Camellia-256 密碼

castcast-cbc

CAST 密碼

cast5-cbccast5-cfbcast5-ecbcast5-ofb

CAST5 密碼

chacha20

Chacha20 加密

desdes-cbcdes-cfbdes-ecbdes-ededes-ede-cbcdes-ede-cfbdes-ede-ofbdes-ofb

DES 加密

des3desxdes-ede3des-ede3-cbcdes-ede3-cfbdes-ede3-ofb

三重 DES 加密

ideaidea-cbcidea-cfbidea-ecbidea-ofb

IDEA 加密

rc2rc2-cbcrc2-cfbrc2-ecbrc2-ofb

RC2 加密

rc4

RC4 加密

rc5rc5-cbcrc5-cfbrc5-ecbrc5-ofb

RC5 加密

seedseed-cbcseed-cfbseed-ecbseed-ofb

SEED 加密

sm4sm4-cbcsm4-cfbsm4-ctrsm4-ecbsm4-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_timeciphers 命令,但適用於 s_clients_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 取得一份副本。