# 指定校验证书内容
对证书进行校验
# 一、请求说明
- 请求地址:http://IP:PORT/openapi/svs/v1/cert/content/verify
- 服务接口名称(即公共参数method的值): cert/content/verify
- 请求方式:POST
# 二、请求参数
| 名称 | 类型 | 是否必须 | 描述 |
|---|---|---|---|
| cert | String | 是 | 证书(base64) |
| verifyNotBefore | Boolean | 否 | 验证证书是否生效(默认校验) |
| verifyNotAfter | Boolean | 否 | 验证证书是否失效(默认校验) |
| verifyChain | Boolean | 否 | 是否验证证书链(默认验证) |
| subject | SubjectEnum | 否 | 验证证书的主题类型 |
| subjectValue | String | 否 | 证书的主题内容(当验证证书的主题类型不为null时证书的主题内容应必填) |
| ocsp | Boolean | 否 | 通过OCSP校验证书(默认校验) |
| caCert | String | 否 | 签发该证书的CA证书(base64) |
| verifyCrl | Boolean | 否 | 是否校验Crl(默认校验) 注:此字段为PKI3.4.0新增字段 |
- SubjectEnum 介绍
| 字段 | 类型介绍 |
|---|---|
| C | 国家 |
| S | 省份 |
| L | 城市 |
| O | 组织名称 |
| OU | 部门名称 |
| CN | 证书持有者 |
# 三、响应参数
| data 结果信息 | 类型 | 描述 |
|---|---|---|
| verification | Integer | 验证结果状态码 |
| message | String | 验证结果信息 |
- verification 返回码介绍
| 字段 | 状态码 | 状态介绍 |
|---|---|---|
| SUCCESS | 0 | 验证成功 |
| CERT_EXPIRED | 1 | 证书已过期 |
| CERT_INEFFECTIVE | 2 | 证书未生效 |
| CERT_USAGE_DEFICIENCY | 3 | 证书密钥用法错误 |
| CERT_OU_MISMATCHING | 4 | 证书主题项不匹配 |
| CERT_REVOKED | 5 | 证书已注销 |
| CERT_UNTRUSTED | 6 | 证书不可信 |
| SIGN_INVALID | 7 | 数字签名验证不通过 |
| EXTENDED_KEYS_ARE_NOT_SUPPORTED | 8 | 证书密钥扩展用法不支持 |
| UNKNOWN_STATUS | 9 | 证书状态未知 |
| EXCEPTION | 10 | 验证异常 |
| CERT_SERIAL_MISMATCHING | 11 | 证书序列号不匹配 |
# 四、成功示例
JSON示例
{
"code":0,
"message":"success",
"requestId":"xxx",
"data":{
"verification":0,
"message":"success"
}
}
# 五、失败示例
JSON示例
{
"code":10002,
"requestId":"xxx",
"message":"请联系客服"
}
# 六、SDK请求示例
// 提供的URL
String url = "http://localhost:20402/openapi/svs/v1";
// 您的appKey
String appKey = "XXX";
// 您的appSecret
String appSecret = "XXX";
// 1.原客户端
PkiClient client = new PkiOkhttpClient(url, appKey, appSecret);
// 2.调用出错,自动重试客户端
String certBase64 = "MIICszCCAligAwIBAgINAO******u1A+nGqO78Uw=";
String ou = "智慧CA";
CertVerifyContentRequest request = new CertVerifyContentRequest();
// 证书内容
request.setCert(certBase64);
// 验证证书是否失效
request.setVerifyNotAfter(true);
// 验证证书是否生效
request.setVerifyNotBefore(true);
// 是否验证证书链
request.setVerifyChain(true);
// OCSP 验证
request.setOcsp(true);
request.setCaCert("MIIBzTCCAXCgAwIBAgIGAXKnMKNyMAwGCCqBHM9VAYN1BQAwSTELMAkGA1UEBhMC\n" +
"Q04xDjAMBgNVBAoTBUdNU1NMMRAwDgYDVQQLEwdQS0kvU00yMRgwFgYDVQQDEw9S\n" +
"b290Q0EgZm9yIFRlc3QwIhgPMjAxNTEyMzExNjAwMDBaGA8yMDM1MTIzMDE2MDAw\n" +
"MFowSTELMAkGA1UEBhMCQ04xDjAMBgNVBAoTBUdNU1NMMRAwDgYDVQQLEwdQS0kv\n" +
"U00yMRgwFgYDVQQDEw9Sb290Q0EgZm9yIFRlc3QwWTATBgcqhkjOPQIBBggqgRzP\n" +
"VQGCLQNCAATj+apYlL+ddWXZ7+mFZXZJGbcJFXUN+Fszz6humeyWZP4qEEr2N0+a\n" +
"Zdwo/21ft232yo0jPLzdscKB261zSQXSoz4wPDAZBgNVHQ4EEgQQnGnsD7oaOcWv\n" +
"6CTrspwSBDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIAxjAMBggqgRzP\n" +
"VQGDdQUAA0kAMEYCIQCEnW5BlQh0vmsOLxSoXYc/7zs++wWyFc1tnBHENR4ElwIh\n" +
"AI1Lwu6in1ruflZhzseWulXwcITf3bm/Y5X1g1XFWQUH");
// 验证证书的ou是否为指定内容
request.setSubject(SubjectEnum.OU);
request.setSubjectValue(ou);
try {
CertVerifyContentResponse response = client.execute(request);
// 后续业务
if (response.isSuccess()) {
System.out.println("成功:" + response.getBody());
} else {
System.out.println("失败:" + response.getBody());
}
} catch (ApiException e) {
e.printStackTrace();
}