OpenSSL格式选项和密码选项简介

文化   2024-10-29 21:55   北京  
有些OpenSSL命令可以以各种格式接收输入或生成输出,openssl-format-options用于介绍OpenSSL命令输入和输出格式选项。还有些OpenSSL命令接受密码参数,通常分别使用-passin和-passout作为输入和输出密码,这些允许从各种来源获取密码。
相关openssl命令的使用方式如下:
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
输入或输出流的格式。
-keyform format
私钥输入源的格式。   
-CRLform format
CRL输入源的格式。

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行之前的文本将被忽略。
----- BEGIN object-type -----OT43gQKBgQC/2OHZoko6iRlNOAQ/tMVFNq7fL81GivoQ9F1U0Qr+DH3ZfaH8eIkXxT0ToMPJUzWAn8pZv0snA0um6SIgvkCuxO84OkANCVbttzXImIsL7pFzfcwV/ERKUM6j0ZuSMFOCr/lGPAoOQU0fskidGEHi1/kW+suSr28TqsyYZpwBDQ==    ----- END object-type -----
END行后的文本也将被忽略
对象类型必须与预期的对象类型匹配。例如,如果命令试图读取私钥,则“BEGIN X509 CERTIFICATE”将不匹配。支持的类型包括:
ANY PRIVATE KEYCERTIFICATECERTIFICATE REQUESTCMSDH PARAMETERSDSA PARAMETERSDSA PUBLIC KEYEC PARAMETERSEC PRIVATE KEYECDSA PUBLIC KEYENCRYPTED PRIVATE KEYPARAMETERSPKCS #7 SIGNED DATAPKCS7PRIVATE KEYPUBLIC KEYRSA PRIVATE KEY    SSL SESSION PARAMETERSTRUSTED CERTIFICATEX509 CRLX9.42 DH PARAMETERS
为了与早期版本兼容,还支持以下旧对象类型:
DSA PRIVATE KEYNEW CERTIFICATE REQUESTRSA PUBLIC KEYX509 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,从文件描述符编号中读取密码。例如,这可用于通过管道发送数据。
stdin,从标准输入中读取密码。   
***推荐阅读***
CentOS编译安装OpenSSL 3.3.1
OpenSSL命令手册
如何使用OpenSSL创建RSA证书文件?
openVPN服务器配置的31个关键点
巧用openVPN实现访问云资源池业务
openVPN客户端连接指南
配置openVPN使用用户名密码认证
手撸一个自动搭建openVPN服务器的SHELL脚本
openVPN配置实现客户端互访
在Ubuntu系统手撸一个自动搭建openVPN服务端的SHELL脚本
openVPN+SmartDNS=openDNS or smartVPN?

铁军哥
高级网络规划设计师,原中国电信高级技术规划工程师,天翼云认证高级解决方案架构师,H3C认证网络工程师。 继续加油,努力传播知识,影响更多人!
 最新文章