# 指定校验证书内容

对证书进行校验

# 一、请求说明

  • 请求地址: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();
        }
最后更新于: 1/31/2023, 10:58:51 AM