有些OpenSSL命令可以以各种格式接收输入或生成输出,openssl-format-options用于介绍OpenSSL命令输入和输出格式选项。还有些OpenSSL命令接受密码参数,通常分别使用-passin和-passout作为输入和输出密码,这些允许从各种来源获取密码。openssl command [ options ... ] [ parameters ... ]
1、openssl-format-options
由于OpenSSL 3.0密钥、单个证书和CRL可以从任何DER、PEM或P12格式的文件中读取。不再需要指定它们的输入格式,openssl命令将自动尝试所有可能的格式。但是,如果指定了DER或PEM输入格式,则将强制执行。为了通过引擎访问密钥,可以使用输入格式ENGINE;或者,各个密钥选项的参数中的密钥标识符前面可以加上“org.openssl.engine:”。有关后者的示例用法,请参阅openssl(1)中的“Engine Options/引擎选项”(OpenSSL命令手册)。2、OPTIONS选项
2.1、格式选项
指定格式的选项如下。请参阅独立手册页,了解可接受的选项。-inform format, -outform format
2.2、格式选项参数
每个命令文档中都描述了可接受的格式参数列表和默认值。DER:一种二进制格式,根据ASN.1数据语言的可分辨编码规则(Distinguished Encoding Rules,DER)进行编码或解析。ENGINE:用于指定加密材料位于OpenSSL引擎中。必须使用-ingine选项配置或指定引擎。可以使用-passin选项向引擎提供密码或PIN。P12:一个包含PKCS#12对象的DER编码文件。可能需要提供解密密码来检索私钥。PEM:是IETF RFC 1421和IETF RFC 7468中定义的文本格式。简而言之,这是一个base-64编码块(在IETF RFC 4648中定义),用特定的行标记开始和结束:----- BEGIN object-type -----
OT43gQKBgQC/2OHZoko6iRlNOAQ/tMVFNq7fL81GivoQ9F1U0Qr+DH3ZfaH8eIkX
xT0ToMPJUzWAn8pZv0snA0um6SIgvkCuxO84OkANCVbttzXImIsL7pFzfcwV/ERK
UM6j0ZuSMFOCr/lGPAoOQU0fskidGEHi1/kW+suSr28TqsyYZpwBDQ==
----- END object-type -----
对象类型必须与预期的对象类型匹配。例如,如果命令试图读取私钥,则“BEGIN X509 CERTIFICATE”将不匹配。支持的类型包括:ANY PRIVATE KEY
CERTIFICATE
CERTIFICATE REQUEST
CMS
DH PARAMETERS
DSA PARAMETERS
DSA PUBLIC KEY
EC PARAMETERS
EC PRIVATE KEY
ECDSA PUBLIC KEY
ENCRYPTED PRIVATE KEY
PARAMETERS
PKCS #7 SIGNED DATA
PKCS7
PRIVATE KEY
PUBLIC KEY
RSA PRIVATE KEY
SSL SESSION PARAMETERS
TRUSTED CERTIFICATE
X509 CRL
X9.42 DH PARAMETERS
DSA PRIVATE KEY
NEW CERTIFICATE REQUEST
RSA PUBLIC KEY
X509 CERTIFICATE
SMIME:IETF RFC 8551中描述的S/MIME对象。早期版本被称为CMS,并且是兼容的。请注意,解析很简单,可能无法解析某些合规数据。3、openssl-passphrase-options
OpenSSL命令的-passin和-passout选项都采用一个参数,其格式如下所述。如果没有给出密码参数并且需要密码,则会提示用户输入密码:这通常会在关闭回显的情况下从当前终端读取。请注意,字符编码可能是相关的,请参阅passphrase-encoding(7)。4、OPTIONS选项
pass:password,实际密码是password。由于密码对实用程序(如Unix下的“ps”)可见,因此此表单仅应在安全性不重要的情况下使用。 env:var,从环境变量var获取密码。由于其他进程的环境在某些平台上可见(例如某些Unix操作系统下的ps),因此应谨慎使用此选项。file:pathname,路径名的第一行是密码。如果为-passin和-passout参数提供了相同的路径名参数,则第一行将用于输入密码,下一行将用于输出密码。路径名不需要引用常规文件:例如,它可以引用设备或命名管道。fd:number,从文件描述符编号中读取密码。例如,这可用于通过管道发送数据。