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,可以使用 openssl-version(1) 命令(使用 -d 或 -a 选项)确定。环境变量 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 感知 Web 服务器。
- 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
-
Triple-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 file
-
在退出时将种子数据写入指定的文件file。此文件可以在后续的命令调用中使用。
证书验证选项
请参阅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和类似选项指定的密钥 ID 使用该引擎。
一个特殊情况是
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) 中的“环境”。
有关查询或指定 CPU 架构标志的信息,请参阅OPENSSL_ia32cap(3)和OPENSSL_s390xcap(3)。
有关 OpenSSL 库使用所有环境变量的信息,请参阅openssl-env(7)。
- OPENSSL_TRACE=name[,...]
-
通过名称启用 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
。
版权
版权所有 2000-2023 OpenSSL 项目作者。保留所有权利。
根据 Apache 许可证 2.0(“许可证”)许可。除非符合许可证的规定,否则您不得使用此文件。您可以在源代码分发包中的 LICENSE 文件或https://www.openssl.org/source/license.html中获取副本。