OCSP服务其实也是用于验证证书是否有效,与之前博客里讲的不同之处在与,通过OCSP服务查询证书状态是实时的,一般证书发布机构将证书吊销后,会发布到Ldap里,这个几乎是实时发布的。所以OSCP服务的证书查询结果是实时的,准确性要比本地验证准确的多。
一、不带签名的代码示例
以下为OSCP的查询代码示例,报文使用ASN.1进行构建。
/**
* 根据OCSP查询证书状态(查询报文不做签名)
* @param ocspUrl OCSP服务的http地址
* @param certFile 用户证书
* @param CACertFile CA证书
* @return 证书状态:0 为证书有效;1为证书已吊销;2为未知
* @throws OCSPResponseException OCSP响应结果异常
*/
public int SAF_getCertificateStateByOCSP(String ocspUrl,File certFile,File CACertFile) throws OCSPResponseException {
TBSRequest tbsRequest = buildTbsRequest(certFile, CACertFile,null);
OCSPRequest ocspRequest = new OCSPRequest(tbsRequest, null);
ASN1Primitive result = HttpClientUtil.httpPost(ocspUrl, ocspRequest.toASN1Primitive(), null);
return parseResult(re