跳到正文

数字证书链查询

接口说明

证书的颁发可以是分级管理,一般为3-4层,比如根证书、中间证书,终端使用者证书分别是不同的结构。如果网站证书是分支机构颁发,那么在用户请求网页的时候,需要把多级证书一起打包下发,便于在终端用于验证其是否为权威机构颁发。(权威证书机构的证书数量有限,一般默认内置在操作系统或者浏览器中,而网页的直接证书颁发机构往往比较灵活)。

推荐应用场景

用于验证某域名的证书是否权威机构颁发。多级证书需要从终端逐级向上认证,以便获知根证书是否为权威机构颁发,是否可以信任。

请求地址

https://api.f.360.cn/cert/std/internal/v2/chain

请求方法

POST

请求参数

参数名类型位置是否必填示例值说明
queryobjectbody是
{
  "keywords": [
    {
      "field": "issuer_sha1",
      "value": "8328b3c3fd8f302da0a35ff41999c808b8a60be7"
    }
  ]
}
查询条件,所有请求参数的父级结构
query.keywordsArray(object)body是
[
  {
    "field": "issuer_sha1",
    "value": "8328b3c3fd8f302da0a35ff41999c808b8a60be7"
  }
]
查询条件,所有请求参数的子级结构
query.keywords.fieldstringbody是issuer_sha1签发者证书的sha1
query.keywords.valuestringbody是查询条件的字段值,为单个sha1值

响应参数

名称类型示例值描述
codestring0响应状态码
dataobject
{
  "total": 0,
  "page": 0,
  "records": 0,
  "rows": [
    "b333c8ef618d59880010147f851012a835632fca"
  ]
}
响应具体信息
data.pageinteger0
data.recordinteger0
data.rowsArray(string)
[
  "b333c8ef618d59880010147f851012a835632fca"
]
data.totalinteger0
msgstringok响应状态信息

请求示例

支持cUrl、Python、Java、PHP、Go语言的请求,示例如下

#!/usr/bin/env bash
set -euo pipefail

APPID=""  # apikey
SECRET=""  # salt
URL="https://api.f.360.cn/cert/std/internal/v2/chain"
BODY='{"query":{"keywords":[{"field":"issuer_sha1","value":"8328b3c3fd8f302da0a35ff41999c808b8a60be7"}]}}'

NONCE=$(printf '%08d' $((RANDOM % 100000000)))
TIMESTAMP=$(date +%s)
BODY_MD5=$(printf '%s' "$BODY" | openssl dgst -md5 -hex | awk '{print $NF}')
SIGNATURE=$(printf '%s' "${BODY_MD5}${APPID}${NONCE}${TIMESTAMP}${SECRET}" | openssl dgst -md5 -hex | awk '{print $NF}')
SIGNATURE=${SIGNATURE:16}

curl --location --request POST "$URL" \
  --header "Content-Type: application/json" \
  --header "X-360-Key: ${APPID}" \
  --header "X-360-Nonce: ${NONCE}" \
  --header "X-360-Timestamp: ${TIMESTAMP}" \
  --header "X-360-Signature: ${SIGNATURE}" \
  --data "${BODY}"

响应示例

业务正常响应

{
    "_oid": 1,
    "code": 0,
    "msg": "ok",
    "data": {
        "total": 0,
        "page": 0,
        "records": 0,
        "rows": [
            "b333c8ef618d59880010147f851012a835632fca"
        ]
    },
    "status": 0
}

业务异常响应

{
    "code": "GS00301",
    "msg": "param missing"
}