req命令主要用于生成和处理PKCS#10证书请求。

用法:

       openssl    req [-inform PEM|DER] [-outform PEM|DER] [-in filename] [-passin arg] [-out filename] [-passout arg] [-text] [-pubkey] [-noout] [-verify] [-modulus] [-new] [-rand file(s)] [-newkey rsa:bits] [-newkey dsa:file] [-nodes] [-key filename] [-keyform PEM|DER] [-keyout filename] [-[md5|sha1|md2|mdc2]] [-config filename] [-subj arg] [-multivalue-rdn] [-x509] [-days n] [-set_serial n] [-asn1-kludge] [-newhdr] [-extensions section] [-reqexts section] [-utf8] [-nameopt] [-batch] [-verbose] [-engine id]

       选项:

       -out

              指定输出文件名。

-outform DER|PEM

       指定输出格式。

-newkey rsa:bits

用于生成新的rsa密钥以及证书请求。如果用户不知道生成的私钥文件名称,默认采用privkey.pem,生成的证书请求。如果用户不指定输出文件(-out),则将证书请求文件打印在屏幕上。生成的私钥文件可以用-keyout来指定。生成过程中需要用户输入私钥的保护口令以及证书申请中的一些信息。

       -new

              生成新的证书请求以及私钥,默认为1024比特。

-rand

       指定随机数种子文件,比如有随机数文件rand.dat,用户输入:-rand file:rand.dat

-config file

指定证书请求模板文件,默认采用openssl.cnf,需另行指定时用此选项。配置的写法可以参考openssl.cnf,其中有关于生成证书请求的设置。

-subj arg

用于指定生成的证书请求的用户信息,或者处理证书请求时用指定参数替换。生成证书请求时,如果不指定此选项,程序会提示用户来输入各个用户信息,包括国名、组织等信息,如果采用此选择,则不需要用户输入了。比如:-subj /CN=china/OU=test/O=abc/CN=forxy,注意这里等属性必须大写。

       -multivalue-rdn

当采用-subj arg选项时,允许多值rdn名,比如arg参数写作:/CN=china/OU=test/O=abc/UID=123456+CN=forxy

       -reqexts ..

              设置证书请求的扩展项,被设置的扩展项覆盖配置文件所指定的扩展项。

       -utf8

              输入字符为utf8编码,默认输入为ASCII编码。

       -batch

不询问用户任何信息(私钥口令除外),采用此选项生成证书请求时,不询问证书请求当各种信息。

       -noout

              不输出证书请求。

       -newhdr

              在生成的PME证书请求文件的头尾添加“NEW”,有些软件和CA需要此项。

       -engine e

              指定硬件引擎。

-keyout

       指定生成的私钥文件名称。

示例:

openssl req –new

openssl req –new –config myconfig.cnf

openssl req –subj /CN=cn/O=test/OU=abc/CN=forxy

openssl req -newkey rsa:1024

openssl req -newkey rsa:1024 -out myreq.pem –keyout myprivatekey.pem

openssl req -newkey rsa:1024 -out myreq.pem -keyout myprivatekey.pem -outform DER

       -subject

              输出证书请求者信息。

-modulus

       输出证书请求的模数。

       示例:openssl req -in myreq.pem -modulus –subject

       -pubkey

              获取证书请求中的公钥信息。

示例:

openssl req -in myreq.pem -pubkey -out pubkey.pem

-in filename

输入的证书请求文件。

       -text

              打印证书请求或自签名证书信息。

       -verify

              验证证书请求。

              示例:

              openssl req -in zcp.pem -verify

-inform DER|PEM

指定输入的格式是DEM还是DER

       -x509

              生成自签名证书。

-extensions ..

              设置证书扩展项,设置的扩展项优先于配置文件指定的扩展项。

       -set_serial

              设置生成证书的证书序列号,比如 -set_serial 100 -set_serial 0x100

       -[md5|md4|md2|sha1|mdc2]

              生成自签名证书时,指定摘要算法。

       -passin

用户将私钥的保护口令写入一个文件,采用此选项指定此文件,可以免去用户输入口令的操作。比如用户将口令写入文件“pwd.txt”,输入的参数为:-passin file:pwd.txt

-days

       指定自签名证书的有效期限。

              示例:

openssl req -in myreq.pem -x509 -key myprivatekey.pem -out mycert.pem

openssl req -in myreq.pem -x509 -key myprivatekey.pem -out mycert.pem -days 300

openssl req -in myreq.pem -x509 -key myprivatekey.pem -out mycert.pem -days 300     -text

openssl req -in myreq.pem -x509 -key myprivatekey.pem -out mycert.pem -days 300     -text -md5

openssl req -in myreq.pem -x509 -key myprivatekey.pem -out mycert.pem -days 300     -text -md5 –set_serial 0x100

openssl req -in myreq.pem -x509 -key myprivatekey.pem -out mycert.pem -days 300 -text -md5 –passin file:pwd.txt

这里的myreq.pemPEM格式的文件,可以用-inform指定其格式。

-out filename

要输出的文件名。

-text

CSR文件里的内容以可读方式打印出来。

-noout

不要打印CSR文件的编码版本信息。

-modulus

CSR里面的包含的公共米要的系数打印出来。

-verify

检验请求文件里的签名信息。

示例:

生成ECC证书请求:

openssl ecparam -genkey -name secp160r1 -out ec160.pem
openssl req -newkey ec:ec160.pem

注意,如果由ecparam  中的 -name指定的密钥长度太短,将不能生成请求。因为md5或者sha1等的摘要长度对它来说太长了。