openssl-x509
名字
openssl-x509 – Certificate display and signing command
概述
openssl x509 [-help] [-in filename|uri] [-passin arg] [-new] [-x509toreq] [-req] [-copy_extensions arg] [-inform DER|PEM] [-vfyopt nm:v] [-key filename|uri] [-keyform DER|PEM|P12|ENGINE] [-signkey filename|uri] [-out filename] [-outform DER|PEM] [-nocert] [-noout] [-dateopt] [-text] [-certopt option] [-fingerprint] [-alias] [-serial] [-startdate] [-enddate] [-dates] [-subject] [-issuer] [-nameopt option] [-email] [-hash] [-subject_hash] [-subject_hash_old] [-issuer_hash] [-issuer_hash_old] [-ext extensions] [-ocspid] [-ocsp_uri] [-purpose] [-pubkey] [-modulus] [-checkend num] [-checkhost host] [-checkemail host] [-checkip ipaddr] [-set_serial n] [-next_serial] [-not_before date] [-not_after date] [-days arg] [-preserve_dates] [-set_issuer arg] [-set_subject arg] [-subj arg] [-force_pubkey filename] [-clrext] [-extfile filename] [-extensions section] [-sigopt nm:v] [-badsig] [-digest] [-CA filename|uri] [-CAform DER|PEM|P12] [-CAkey filename|uri] [-CAkeyform DER|PEM|P12|ENGINE] [-CAserial filename] [-CAcreateserial] [-trustout] [-setalias arg] [-clrtrust] [-addtrust arg] [-clrreject] [-addreject arg] [-rand files] [-writerand file] [-engine id] [-provider name] [-provider-path path] [-propquery propq]
描述
此命令是一个多用途证书处理命令。它可用于打印证书信息、将证书转换为各种形式、编辑证书信任设置、从头开始或从证书请求生成证书,然后自行签名或像“micro CA”一样签名。
生成的证书带有 X.509 version 3扩展。除非另有说明,否则密钥标识符扩展将包含。
由于有大量选项,它们将分为不同的部分。
命令选项
Input, Output, and General Purpose Options
输入,输出和通用选项
- -help
帮助
-
-in filename
输入证书或请书请求(-req指定时)文件的位置,默认为std input。不能与-new选项一起使用
-
-passin arg
读取证书或密钥文件的密码
-
-new
从头创建证书,不使用-in读取证书或证书请求,所以不能与-in和-req选项共存。-set_subject option是必须的(subject代表公钥所属的实体),通过-force_pubkey指定公钥(此时是对这个公钥签名)。默认是自签名(自己的公钥)且使用-key (or -signkey)提供的私钥。
-
-x509toreq
生成证书请求而不是证书,自签名时必须指定 -key (or -signkey) option用于提供自签名私钥,对应的公钥会保存在subjectPKInfo字段。
默认情况下,不会复制输入证书中包含的 X.509 扩展。可以使用 -extfile 选项指定要添加的 X.509 扩展。 -
-req
默认情况下,输入时需要证书。使用此选项则需要 PKCS#10 证书请求,该请求必须正确自签名(防止篡改)。
默认情况下,不会复制请求中包含的 X.509 扩展。可以使用 -extfile 选项指定要添加的 X.509 扩展。 -
-copy_extensions arg
当使用-x509toreq证书转请求或-req请求转证书时确定复制X.509扩展的方式。arg为none时忽略所有扩展,为copy或copyall时复制所有扩展,还可以通过-ext选项进一步控制要复制哪些扩展。
-
-inform DER|PEM
输入的csr文件格式,默认首先尝试pem格式
-
-vfyopt nm:v
验证签名时指定签名算法的选项,不同的签名算法选项也不同
-
-key filename|uri
此选项提供用于签署新证书或证书请求的私钥。除非提供 -force_pubkey,否则该私钥对应的公钥将放在新证书或证书请求中,从而产生自签名。
此选项不能与 -CA 选项一起使用。
把issuer name设置为subject name(即使是自签名)。除非提供 -preserve_dates 选项,否则它将有效期开始日期设置为当前时间,并将结束日期设置为由 -days 选项确定的值。开始日期和结束日期也可以通过选项 -not_before 和 -not_after 明确提供。 -
-signkey filename|uri
这个选项是-key的别名
-
-keyform DER|PEM|P12|ENGINE
读取key的格式
-
-out filename
输出文件位置,不指定时输出到终端
-
-outform DER|PEM
输出文件格式,默认PEM
-
-nocert
不打印证书,其余部分按下面选项指定的内容打印
-
-noout
只打印下面选项指定的内容
Certificate Printing Options
证书打印选项
注意:-alias 和 -purpose 选项也是打印选项,但在“Trust Settings”部分中描述。
- -dateopt
指定日期输出格式。值为:rfc_822 和 iso_8601。默认为 rfc_822。
-
-text
以文本形式打印出证书。打印的完整详细信息包括public key, signature algorithms, issuer and subject DN名称, serial number, 任意 extensions以及任何trust settings。
-
-certopt option
为-text自定议打印格式,多个选项可以指定多次也可以用豆号分隔,具体语法参考”Text Printing Flags“
-
-fingerprint
计算和打印证书(DER编码)的指纹,每个证书的指纹是唯一的
-
-alias
打印证书的alias(nickname),如果有的话。
-
-serial
打印证书序列号
-
-startdate
打印证书生效起始日期
-
-enddate
打印证书失效日期
-
-dates
打印证书的起始和失效日期
-
-subject
Prints the subject name.
-
-issuer
Prints the issuer name.
-
-nameopt option
指定subject or issuer names 的显示方式. 参考:openssl-namedisplay-options for details.
-
-email
Prints the email address(es) if any.
-
-hash
同-subject_hash
-
-subject_hash
打印subject name的hash,用于生成索引在目录中通过subject name查找证书。
-
-subject_hash_old
打印subject name的hash,使用OpenSSL 1.0中的旧hash算法
-
-issuer_hash
Prints the “hash” of the certificate issuer name.
-
-issuer_hash_old
Prints the “hash” of the certificate issuer name using the older algorithm as used by OpenSSL before version 1.0.0.
-
-ext extensions
以文本形式打印出证书扩展。也可用于限制要复制的扩展。扩展用逗号分隔的字符串指定,例如“subjectAltName, subjectKeyIdentifier”。请参阅 x509v3_config .
-
-ocspid
打印subject name 和 public key 的 OSCP hash.
-
-ocsp_uri
Prints the OCSP responder address(es) if any.
-
-purpose
对证书扩展执行测试并输出结果. For a more complete description see “Certificate Extensions” in openssl-verification-options.
-
-pubkey
Prints the certificate’s SubjectPublicKeyInfo block in PEM format.
-
-modulus
This option prints out the value of the modulus of the public key contained in the certificate.
Certificate Checking Options
-
-checkend arg
检查如果证书在未来arg秒钟内过期返回非0值,否者返回0值。
-
-checkhost host
Check that the certificate matches the specified host.
-
-checkemail email
Check that the certificate matches the specified email address.
-
-checkip ipaddr
Check that the certificate matches the specified IP address.
Certificate Output Options
-
-set_serial n
指定证书序列号
Specifies the serial number to use. This option can be used with the -key, -signkey, or -CA options. If used in conjunction with the -CA option the serial number file (as specified by the -CAserial option) is not used.The serial number can be decimal or hex (if preceded by 0x).
-
-next_serial
当前证书序列号加1
Set the serial to be one more than the number in the certificate. -
-not_before date
指定证书生效起始日期
证书生效的起始日期。格式是YYMMDDHHMMSSZ
或YYYYMMDDHHMMSSZ
,秒SS和时区Z是必须存在的,可以指定today
Cannot be used together with the -preserve_dates option.
-
-not_after date
指定证书过期时间
证书生效的起始日期。格式是YYMMDDHHMMSSZ
或YYYYMMDDHHMMSSZ
,秒SS和时区Z是必须存在的,可以指定today
Cannot be used together with the -preserve_dates option. This overrides the option -days.
-
-days arg
指定证书从现在起算有效天数,默认为30。
不能与选项 -preserve_dates 一起使用。如果设置了选项 -not_after,则明确的到期日期优先。 -
-preserve_dates
签署证书时,保留任何输入证书的“notBefore”和“notAfter”日期,而不是将其调整为当前时间和持续时间。不能与选项 -days、-not_before 和 -not_after 一起使用。
-
-set_issuer arg
创建证书时指定issuer的DN名,具体格式参考-set_subject
-
-set_subject arg
创建证书时指定主题的DN,arg的格式为
/type0=value0/type1=value1/type2=...
。
特殊字符用\
转义,允许使用空格,单个/
指定空的DN,可以用+
代表/
作为两个RDN之间的分隔符,例如/DC=org/DC=OpenSSL/DC=users/UID=123456+CN=John Doe
,/C=CN/ST=Shanghai/L=Shanghai/CN=hetao/emailAddress=tao@hetao.me/
。
This option can be used with the -new and -force_pubkey options to create a new certificate without providing an input certificate or certificate request. -
-subj arg
This option is an alias of -set_subject.
-
-force_pubkey filename
创建证书时使用指定证书的公钥,而不是输入证书或请求中以及-key选项指定的公钥(与私钥对应)。
如果filename是一个私钥文件则使用其公钥部分。
与 -new and -set_subject 一起使用可以直接生成包含指定公钥和subject的证书.
This option is also useful for creating self-issued certificates that are not self-signed, for instance when the key cannot be used for signing, such as DH. -
-clrext
默认情况下,将证书转换为新证书时,所有证书扩展都会保留。
转换证书或证书请求时,-clrext 选项会阻止从源接管任何扩展。无论如何,在生成证书请求时,都不会接管主体标识符或授权密钥标识符扩展。 -
-extfile filename
在创建证书或请求时filename指定要添加的X.509扩展,
-
-extensions section
为-extfile指定section名称,如果没有指定则直接从default section查看,也会从default section中的extensions变量指定的section中查找。
See the x509v3_config(5) manual page for details of the extension section format.
Unless specified otherwise, key identifier extensions are included as described in x509v3_config(5). -
-sigopt nm:v
签名算法的选项,可以多次使用,不同算法有不同的选项
-
-badsig
写入一个无效签名,用于测试
-
-digest
要使用的digest算法。这会影响使用消息摘要的任何签名或打印选项,例如 -fingerprint、-key 和 -CA 选项。可以使用 openssl-dgst(1) 命令支持的任何摘要。如果未指定,对于-fingerprint选项则使用 SHA1,对于签名算法的通常为 SHA256。
Micro-CA Options
微型CA(模拟一个小型CA服务器)
- -CA filename|uri
指定签名用的 CA 证书,使用这个选项时,它的行为就是一个微型CA:CA证书的subject name会为成新证书的issuer,然后使用CA的私钥签证。
这个选项不能与-key (or -signkey)一起使用。与-req选项一起使用时会读入CSR,否者会读入证书,另外与-new一起使用时会从头创建证书。 -
-CAform DER|PEM|P12,
CA证书的格式
-
-CAkey filename|uri
设置CA的私钥,指定的私钥必须与CA证书匹配,如果没有指定这个选项则-CA指定的CA证书中必须包括私钥。
-
-CAkeyform DER|PEM|P12|ENGINE
The format for the CA key; unspecified by default. See openssl-format-options(1) for details.
-
-CAserial filename
设置要使用的 CA 序列号文件。
使用此选项和 -CA 选项创建证书时,证书序列号存储在给定文件中。此文件由一行组成,其中包含偶数个十六进制数字,以及上次使用的序列号。读取此数字后,该数字将递增并使用,然后更新文件。
默认文件名由 CA 证书文件基本名称和附加的 .srl 后缀组成。例如,如果 CA 证书文件名为 mycacert.pem,则它会找到一个名为 mycacert.srl 的序列号文件。
如果指定了 -CA 选项,并且未提供 -CAserial> 或 -CAcreateserial,并且默认序列号文件不存在,则会生成一个随机数;这是推荐的做法。 -
-CAcreateserial
-CA 选项一起使用,如果不存在 CA 序列号文件,则创建该文件。将生成一个随机数用于证书,并保存到如上所述(-CAserial filename)确定的序列号文件中。
Trust Settings
可信设置。
受信任证书是一种普通证书,它附带了几个附加信息,例如证书的允许和禁止用途以及可能的“alias”(nickname)。
通常,在验证证书时,必须至少有一个证书是“受信任的”。默认情况下,受信任证书必须存储在本地,并且必须是根 CA:任何以此 CA 结尾的证书链都可以用于任何目的(受支持的)。
信任设置目前仅用于根 CA。它们允许更精细地控制根 CA 的用途。例如,CA 可能被信任用于 SSL 客户端,但不被信任用于 SSL 服务器。
有关信任设置含义的更多信息,请参阅 openssl-verification-options。
OpenSSL 的未来版本将识别任何证书上的信任设置:而不仅仅是根 CA。
可信证书包含在—–BEGIN TRUSTED CERTIFICATE—–分隔符中,用于openssl对证书的用途进行验证。
这个可能主要用于OpenSSL的SSL会话中信任服务端证书,比如s_client命令,相当于OpenSSL专用的受信任根证书列表。
- -trustout
标记任意PEM证书输出为受信任的。普通和受信任证书都可以作为输入但是默认情况下任何可信设置都会丢弃。使用这个选项后可以输出受信任证书。如果只是修改证书的信任设置仍然会输出一个信任证书。
-
-setalias arg
设置证书的alias,这将允许使用nickname引用一个证书,例如”Steve’s Certificate”
-
-clrtrust
清除证书的允许用途
-
-addtrust arg
添加受信任的证书用途。此处可以使用任何对象名称,但目前仅定义了 clientAuth、serverAuth、emailProtection 和 anyExtendedKeyUsage。从 OpenSSL 1.1.0 开始,最后一次在被拒绝时阻止所有用途,在受信任时启用所有用途。其他 OpenSSL 应用程序可能会定义其他用途。
-
-clrreject
请理证书所有禁止用途。
-
-addreject arg
添加禁止的证书用途,与-addtrust option的格式相同.
Generic options
通用选项
- -rand files, -writerand file
指定随机数状态保存的文件,读取之前的随机数生成器状态并写入当前状态用于下次执行的时候继续使用。现在OpenSSL已经从操作系统中读取熵源,这个选项不再需要,只是在特殊情况下才有用。
-
-engine id
指定engine id,这个选项已经废弃
-
-provider name
指定provider name
-
-provider-path path
provider的路径
-
-propquery propq
provider中的属性
Text Printing Flags
除了自定义名称打印格式外,还可以使用 -certopt 选项(当存在-text选项时)自定义打印的实际字段。默认行为是打印所有字段。
- compatible
Use the old format. This is equivalent to specifying no printing options at all.
-
no_header
Don’t print header information: that is the lines saying “Certificate” and “Data”.
-
no_version
Don’t print out the version number.
-
no_serial
Don’t print out the serial number.
-
no_signame
Don’t print out the signature algorithm used.
-
no_validity
Don’t print the validity, that is the notBefore and notAfter fields.
-
no_subject
Don’t print out the subject name.
-
no_issuer
Don’t print out the issuer name.
-
no_pubkey
Don’t print out the public key.
-
no_sigdump
Don’t give a hexadecimal dump of the certificate signature.
-
no_aux
Don’t print out certificate trust information.
-
no_extensions
Don’t print out any X509V3 extensions.
-
ext_default
Retain default extension behaviour: attempt to print out unsupported certificate extensions.
-
ext_error
Print an error message for unsupported certificate extensions.
-
ext_parse
ASN1 parse unsupported extensions.
-
ext_dump
Hex dump unsupported extensions.
-
ca_default
The value used by openssl-ca, equivalent to no_issuer, no_pubkey, no_header, and no_version.
NOTES
The conversion to UTF8 format used with the name options assumes that T61Strings use the ISO8859-1 character set. This is wrong but Netscape and MSIE do this as do many certificates. So although this is incorrect it is more likely to print the majority of certificates correctly.
名称选项(-subject,-issuer)会转换为UTF8 格式转换,假定 T61Strings 使用的是 ISO8859-1 字符集。这是错误的,但 Netscape 和 MSIE 以及许多证书都这样做。因此,尽管这是不正确的,但更有可能正确打印大多数证书。
-email 选项搜索主题名称和主题备用名称扩展名。只会打印出唯一的电子邮件地址:它不会多次打印相同的地址。
自 OpenSSL 3.2 起,生成的证书带有 X.509 版本 3(不再支持低于V3的版本?),并且默认包含key identifier扩展。
Views: 0
发表回复
要发表评论,您必须先登录。