用途:
在线证书状态工具。它使应用程序能够决定一个被识别的证书的状态值(根据RFC2560)。Ocsp命令执行很多OCSP的任务。它可以被用于打印请求文件和响应文件,常见请求文件和发送一个OCSP响应文件,它就像一个消息OCSP服务器。
用法:
openssl ocsp [-out file] [-issuer file] [-cert file] [-serial num] [-signer file] [-signkey file ]
[-sign_other file ] [-no_certs] [-req_text] [-resp_text] [-text] [-reqout file] [-respout file]
[-reqin file] [-respin file] [-nonce] [-no_nonce] [-url URL] [-host host:n] [-path] [-CApath dir]
[-CAfile file] [-VAfile file] [-validity_period n] [-status_age n] [-noverify] [-verify_other file]
[-trust_other] [-no_intern] [-no_signature_verify] [-no_cert_verify] [-no_chain] [-no_cert_checks]
[-port num] [-index file] [-CA file] [-rsigner file] [-rkey file] [-rother file] [-resp_no_certs] [-nmin n]
[-ndays n] [-resp_key_id] [-nrequest n]
选项说明:
客户端选项:
-out file:指定的输出文件,默认为标准输出。
-issuer file:指定当前颁发者的证书信息值。该选项可以被用于多次。File中的证书必须是PEM格式的。
-cert file:将file中的证书添加到OSCP请求中去。
-serial num:将数字证书中的序列号添加到OSCP请求中去。num为证书序列号,0x开始表示是十六进制数据,否则是十进制数据,num可以是负数,前面用-表示。
-signer file、-signkey file:OSCP请求签名时,从file中读取证书公钥信息值和证书私钥值。如果只设置-signer选项,私钥和证书都从-signer指定的文件中读取;如果不设置这两项,OCSP请求将不会被签名。
-sign_other file:签名的请求中添加其他证书。
-nonce:设置OCSP中的nonce扩展。
-no_nonce:不设置OCSP中的nonce扩展。
-no_certs:签名的请求中不添加任何证书。
-req_text:打印OCSP请求信息。
-resp_text:打印OCSP响应信息。
-text:打印OCSP的请求消息值以及响应消息值。
-reqout file:指定DER编码的OCSP请求输出文件。
-respout file:指定DER编码的OCSP响应输出文件。
-reqin file:指定输入的DER编码的OCSP请求文件。
-respin file:指定输入的DER编码的OCSP响应文件。
-url URL:指定OCSP服务的URL地址。
-host host:n:发送OCSP请求给服务,host为地址或域名n为端口号。
-path:OCSP请求所用的路径。
-CApath dir:可信CA文件目录。每个CA文件的文件名为XXXX.0,XXXX为其持有者摘要值。
-CAfile file:可信CA文件证书。
-verify_other file:设置其他用于搜索OCSP响应者证书的文件。
-VAfile file:指定受信任的OCSP服务的证书,file可以包含多个证书;等价于-verify_certs 和-trust_other选项。
-validity_period n:设置OCSP响应中可接受的时间误差,n以秒为单位。默认可接受时间误差为5秒。
-status_age n:如果OCSP响应中没用提供响应的失效时间,则说明马上可以获取到新的响应信息;此时需要检查起始时间是否比当前时间晚n秒;默认情况不做此操作。
-noverify:不验证OCSP响应的签名和nonce。
-trust_other:由-verify_other指定的文件中包含了响应者的证书,用此选项时,不对响应者证书做额外的验证。当不能获取响应者证书的证书链或其根CA时,可用此选项,以保证验证能通过,即:使用了此选项后,verify_other所指定的OCSP服务者证书是可以信任的,即使那些证书有问题。
-no_intern:不搜索OCSP响应者的证书,采用此选项时,OCSP响应者的证书必须在-verify_certs或-VAfile中指定。
-no_signature_verify:不验证响应者的签名,用于测试。
-no_cert_verify:不验证响应者的证书,用于测试。
-no_chain:不验证响应者证书链。
-no_cert_checks:不验证响应者证书,不检查响应者是否有权来发布OCSP响应,用于测试。
服务器选项:
-port num:OCSP服务端口。
-index file:指定证书状态索引文件。
-CA file:指定CA证书。
-rsigner file:指定用于签发OCSP响应的证书。
-rkey file:指定用于签发OCSP响应的私钥文件。
-rother file: 将其他证书添加到OCSP响应中。
-resp_no_certs:OCSP响应中不包含证书。
-nmin n:距离下次更新时间,n以分钟为单位。
-ndays n:距离下次更新时间,n以天为单位。
-resp_key_id:用响应者的私钥ID来标记OCSP响应,默认为响应者证书的持有者。
-nrequest n:OCSP服务最大响应个数,默认无限制。
OCSP响应确认:
OCSP响应祖训RFC2560中指定的规则。
最初OCSP响应者的证书时位于本地的。OCSP请求中的签名值用响应者的公钥来检查。
在处理过程中一个普通的证书被OCSP响应者证书所建立的证书链所验证。被B
如果最初的验证的失败,OCSP验证过程将会停止并报出错误。
否则在请求文件中的CA发行证书将会与OCSP的响应者证书向比较:如果匹配,则OCSP验证成功。
否则OCSP的响应者证书将再次被请求文件中的CA发行证书所检查。如果匹配且在OCSP的响应者证书中存在OCSPSigning扩展密钥用法,OCSP验证将会通过。
如果OCSP签名时可信任的则OCSP的响应者的根CA将会被检查。如果验证成功。
如果没有上述的检查成功,则OCSP验证失败。
这就意味着OCSP的响应者证书被CA目录所授权可以颁发废除信息,则验证通过。
如果OCSP的响应者是一个"global responder",它可以给出多个CA的详细说明,并有自己的分开的证书链,则是一个根CA,是被OCSP签名所信息的。实例如下:
openssl x509 -in ocspCA.pem -addtrust OCSPSigning -out trustedCA.pem
还有一种方法是响应者的证书可以在B<-VAfile>选项中明确的指明它是受信任的。
注意:
大多数的验证选项时用于测试或调试用途。普通的紧紧可以使用B<-CApath>, B<-CAfile> and (if 响应者是"global responder") B<-VAfile>。
OCSP服务器紧紧用于测试和示范用途:不可以作为一个人全部的OCSP响应者。仅仅包含了一个废除简单的处理HTTP请求和仅仅能够处理OCSP查询到的POST表单。它可以连续的处理请求,这就意味着不能够响应新的请求直到处理到现在的这个。废除列表的文本主题文件对一个大的工程量来说是一个无效率的文件。
有可能运行ocsp应用程序在响应模式下,用脚本来运行,用B
实例:
生成OCSP请求并写入到文件:
openssl ocsp -issuer issuer.pem -cert c1.pem -cert c2.pem -reqout req.der
向URL http://ocsp.myhost.com/中发送一个OCSP响应查询:
openssl ocsp -issuer issuer.pem -cert c1.pem -cert c2.pem \
-url http://ocsp.myhost.com/ -resp_text -respout resp.der
打印OCSP请求信息:
openssl ocsp -reqin ocspreq.der –text
启动OCSP服务:
openssl ocsp -ndays 1 -index demoCA/index.txt -port 3904 -CA demoCA/cacert.pem
-text -rkey ocspserverkey.pem -rsigner ocspservercert.pem
请求OCSP响应:
openssl ocsp -issuer demoCA/cacert.pem -url http://127.0.0.1:3904 -reqin
ocspreq.der -VAfile ocspservercert.pem -respout resp.der
打印如下信息:
Response verify OK
或者:
openssl ocsp -issuer demoCA/cacert.pem -url http://127.0.0.1:3904 -cert cert.pem -cert cert2.pem -VAfile ocspservercert.pem -respout resp.der
打印如下信息:
Response verify OK
cert.pem: unknown
This Update: Mar 9 16:50:12 2007 GMT
Next Update: Mar 10 16:50:12 2007 GMT
cert2.pem: revoked
This Update: Mar 9 16:50:12 2007 GMT
Next Update: Mar 10 16:50:12 2007 GMT
Revocation Time: Mar 9 13:56:51 2007 GMT
根据响应的文件来验证:
openssl ocsp -respin resp.der -VAfile ocspserverc ert.pem –text