Certum API 文档

申请与重签证书流程

Certum API 文档

接口说明与产品

push通知

api支持对签发和取消订单操作执行 PUSH 主动通知,以避免您采用轮询方式增加服务器负担。接入此通知准备工作:

1.下单参数说明

需要保证您在调用api下单接口时对 notifyUrl参数 赋予合法的api push 地址, 推送统一用 POST

2.验证机制

api提供了一种基于哈希消息认证码(HMAC)签名来验证 webhook 的方法

api将发送包含 Webhook 签名的特殊header: X-Webhook-Signature

为了验证接口上收到的签名,必须执行以下步骤:

1.将收到的请求的原始正文计算 HMAC。 将获得的 HMAC 编码为 base64 格式——这是计算出的签名。

2.将header中的签名X-Webhook-Signature与上一步中计算出的签名进行比较。如果它们相同,则意味着 Webhook 来自我们,并且其有效负载未被任何第 3 方修改。

代码示例-签名验证

NodeJS示例如下:

若apiKey的值是apiKey123

rawBody的值是data_test

则sig的值是ATyqaNp4B+lhM/xFRKyk4//VdVAbxYNbPvrlQrbbMj4=

javascript

const crypto = require('crypto');
const apiKey = '...';
module.exports.handler = async event => {
    // 验证用的请求头
    const sigHeader = event.headers['X-Webhook-Signature'];
    //接收的原始正文
    const rawBody = event.body;
    // 计算 base64 编码的签名
    const sig = crypto.createHmac('sha256', apiKey)
        .update(rawBody)
        .digest('base64');
    if (sig !== sigHeader) {
        // Webhook 签名不匹配,不被信任
        return {
          statusCode: 400,
          body: JSON.stringify({ message: 'Webhook rejected!' }),
        };
    }
    const webhookPayload = JSON.parse(rawBody).data;
    // Webhook 可信, 继续处理内部逻辑。。。
};

PHP示例如下:

若apiKey的值是apiKey123

rawBody的值是data_test

则sig的值是ATyqaNp4B+lhM/xFRKyk4//VdVAbxYNbPvrlQrbbMj4=

php

define('apiKey', '...');
//接收的原始正文
$rawBody = file_get_contents('php://input');
// 验证用的请求头
$sigHeader = getallheaders()['X-Webhook-Signature'];
// 计算 base64 编码的签名
$sig = base64_encode(hash_hmac('sha256', $rawBody, apiKey, true));
// Webhook 签名不匹配,不被信任
if ($sig !== $sigHeader) {
    return;
}
$webhookPayload = json_decode($rawBody, true)['data'];
// Webhook 可信, 继续处理内部逻辑。。。

3.确认接收:

正确处理并接收 PUSH 消息后,请您 8s内 返回http状态码 200, 以及json 格式的消息: {"status":"success"} 告知服务器处理成功,否则均表示为接收失败,

当我们获取到处理失败信息时,将会按照下列的推送频率继续此消息的推送

4.推送频率:

为保障您的系统可以成功接收到我们推送的信息,我们将按照7个阶段进行推送。您的程序可以在任何一个阶段中的任何一次推送中进行确认接收。一旦完成确认

接收成功,我们将会停止接下来的推送。

倘若您的程序在第七阶段(最后阶段)任然无法完成确认接收,本次通知将会失效,我们不再保留这条推送任务。您需要通过其他API方式获取证书信息。

  • 一阶段: 实时推送一次,若没有完成确认接收;将会立即再推送第二次,若依然没有完成确认接收,则立即继续尝试第三次推送。如果依然没有完成确认接收,则进行下一个阶段。
  • 二阶段: 每隔1分钟再次尝试推送,共尝试5次
  • 三阶段: 每隔5分钟再次尝试推送,共尝试5次
  • 四阶段: 每隔1小时再次尝试推送,共尝试1次
  • 五阶段: 每隔2小时再次尝试推送,共尝试1次
  • 六阶段: 每隔12小时再次尝试推送,共尝试1次
  • 七阶段: 每隔24小时再次尝试推送,共尝试1次

5.请求头数据类型

Content-Type 为 application/json

6.请求体:

api根据您的 下单的 notifyUrl 传递的接口地址 使用post 传输 json 推送数据

6.1.1证书签发的推送信息:

code

{
    "auth": {
        "authToken": "c55eed1e30e4f3cb36de07c9f76d50c8",
        "randomStr": "success"
    },
    "notifyInfo": {
        "orderNo": "2021011221355666",
        "certID": 142932802604630016,
        "status": "3004",
        "statusDesc": "issued",
        "serialNumber": "ebdd502ca70645e0acdbf0c9a43f6af",
        "certContent": "-----BEGIN CERTIFICATE-----\nMIIFpDCCBIygAwIBAgIQDr3VAspzZF4Kzb8MmkP2rzANBgkqhkiG9w0BAQsFADCB\njzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQsQH\n/+YpBRT6Kd1WsedeyquzGBd3DPU94WGn6Kg7VHwP5/Iz7IhAYyNrtg4uVdqXwF0c\nEi4viTme6Deqo8Gizr5n7NlANwGaKKbNP2yiTLipp93bya1WRQvtiES4b17hYYMS\nOj6cikgJBJo=\n-----END CERTIFICATE-----\n",
        "midCertContent": "-----BEGIN CERTIFICATE-----\bxmRE1a6Vqe8YAsOf4vmSyrcjC8azjUeqkk+B5\nyOGBQMkKW+ESPMFgKuOXwIlCypTPRpgSabuY0MLTDXJLR27lk8QyKGOHQ+SwMj4K\n00u/I5sUKUErmgQfky3xxzlIPK1aEn8=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFg6pKJmBHaIkU4MiRTOok3JMrO66BQavHHxW/BBC5gA\nCiIDEOUMsfnNkjcZ7Tvx5Dq2+UUTJnWvu6rvP3t3O9LEApE9GQDTF1w52z97GA1F\nzZOFli9d31kWTz9RvdVFGD/tSo7oBmF0Ixa1DVBzJ0RHfxBdiSprhTEUxOipakyA\nvGp4z7h/jnZymQyd/teRCBaho1+V\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb\nMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowAVGI/6ugLOpyypEBMs1OUIJqsi\nl2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3\nsmPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==\n-----END CERTIFICATE-----\n",
        "notBefore": 1606262400000,
        "notAfter": 1637884799000,
        "commonName": "test.com",
        "domainNames": [
            "test.com"
        ],
        "sha1": "77ddc84576d56661867c0f95a341642e9699d350",
        "sha256": "0e27a14fcb7a6014ab0500171438ce1eeaeffa7d6f2006b344d5d3e1ed2835f7",
        "issuerCommonName": "Sectigo RSA Domain Validation Secure Server CA",
        "issuerCountry": "GB",
        "issuerOrg": "Sectigo Limited",
        "signatureAlgo": "SHA256-RSA",
        "encryption": "RSA",
        "keyLength": 2048,
        "keyCurve": ""
    }
}

6.1.2证书签发的推送信息解释

参数名称类型描述
authobject身份验证对象(已弃用,仅做保留)
..authTokenstring待解密字符串
..randomStrstring随机字符串, authToken的解密结果应与此相等
notifyInfoobject通知消息对象
..orderNostring订单编号
..certIDint证书编号
..statusstring订单状态代码 3004
..statusDescstring状态描述 issued
..serialNumberstring证书序列号
..certContentstring证书
..midCertContentstring中间证书
..notBeforeint证书签发日期 时间戳 (毫秒)
..notAfterint证书到期日期 时间戳(毫秒)
..commonNamestring证书的常用名称
..domainNamesArray证书包含的所有域名数组
..sha1string证书的sha1值
..sha256string证书的sha256值
..issuerCommonNamestring颁发者通用名称
..issuerCountrystring颁发者国家
..issuerOrgstring颁发者组织
..signatureAlgostring证书签名算法
..keyCurvestring秘钥曲线(encryption为ECDSA(又名ECC)时成对出现) 如signatureAlgo为ECDSA-SHA384,encryption为ECDSA,keyCurve为P256
..encryptionstring加密算法
..keyLengthint私钥长度(encryption为RSA时成对出现)

6.2.1证书取消的推送信息:

code

{
    "auth": {
        "authToken": "c55eed1e30e4f3cb36de07c9f76d50c8",
        "randomStr": "success"
    },
    "notifyInfo": {
        "orderNo": "202001016666",
        "certID": 142932802604630016,
        "status": "3005",
        "statusDesc": "canceld"
    }
}

6.2.2证书取消的推送参数解释

参数名称类型描述
authobject身份验证对象(已弃用,仅做保留)
..authTokenstring待解密字符串
..randomStrstring随机字符串, authToken的解密结果应与此相等
notifyInfoobject通知消息对象
..orderNostring订单编号
..certIDint证书编号
..statusstring订单状态代码
..statusDescstring状态描述

订单状态码

状态码类型说明
1001string未支付(订单未支付或重签的差额未支付)
1002string已支付
1003string支付成功,但提交到ca申请订单异常,请联系客服
1004string已取消
1006string支付成功,但提交到ca申请订单超时,请联系客服

证书状态码

状态码类型说明
3002string已支付,等待签发
3003string支付成功,但提交到ca申请订单异常,请联系客服
3004string已签发
3005string已取消
3006string支付成功,但提交到ca申请订单超时,请联系客服

重签状态码

状态码类型说明
“” 空string还未申请重签
5001string重签申请中
5002string重签申请成功
5003string重签申请失败
5004string重签需要补差价,但没有补交(暗示余额不足),仅与1001有关,但当订单状态为1002时则不需关注

域名验证状态码

状态码类型说明
2001string未验证
2002string已验证

ov验证状态码

状态码类型说明
2000string不需要此验证
2001string未验证
2002string已验证

ev验证状态码

状态码类型说明
2000string不需要此验证
2001string未验证
2002string已验证

签发前状态汇总状态码

状态码类型说明
2001string未验证
2002string已验证

错误信息格式

code值见错误码

json

{
    "code": 6000, 
    "msg": "错误信息", 
    "data": null
}

错误码

code

    //下订单接口
    SuccessCode = 200 //success
    ServerError = 500 //服务端错误
    BalanceNotEnough         = 6000 //账户余额不足
    NoProduct                = 6001 //暂未提供相应产品
    ParamFormatInvalid       = 6002 //参数类型或参数名有误
    YearInvalid              = 6003 //年限不支持
    DcvMethodInvalid         = 6004 //dcvMethod 不支持
    GlobalsignNoEmail        = 6005 //globalsign暂不支持email域名验证方式
    CsrInvalid               = 6006 //csr 不合法
    UnSupportIP              = 6007 //不支持IP
    DomainInvalid            = 6008 //域名不合法
    UnSupportWildCard        = 6009 //不支持通配
    OrderNoInvalid           = 6010 //订单号错误
    RecommitDenied           = 6011 //此订单不满足重新提交的条件
    OrderOverYears           = 6012 //订单已超过有效期
    FreeCertNoResign         = 6013 //免费证书不能重签
    CertIssueNotDoneNoResign = 6014 //证书未颁发完成不能重签,重签后未颁发完成,也不能重签
    CsrNoOrgInvalid          = 6015 //csr 必须包含企业信息
    OrderPayedAlready        = 6016 //csr 订单已支付
    //取消订单
    ReCancelDenied            = 6100 //不能重复取消订单
    ReSignedCancelDenied      = 6101 //重签成功的订单不允许取消
    ReChargeCancelDenied      = 6102 //不支持取消充值订单
    FreeCertCancelDenied      = 6103 //免费证书不允许取消
    IssuedAfter30CancelDenied = 6104 //证书颁发30天后,不能退款
    //下载证书
    CertUnIssued = 6200 //证书未签发完成
    //修改验证方式
    UpdateDcvUnSupported   = 6300 //此产品不支持修改验证方式
    IPUpdateDcvUnSupported = 6301 //ip不允许修改验证方式
    DomainNotExist         = 6302 //域名不存在,请重试
    DomainHasBeenVerified  = 6303 //域名已验证,无需更改验证方式
    CanNotUpdateSameDcv    = 6304 //不能更换相同的验证方式
    NoNeed2VerifyDcv       = 6305 //此证书无需请求验证
    LackOfOrderInfo        = 6306 //缺少必要订单信息
    //重新生成dcvToken
    ReGenDcvTokenUnSupport = 6400 //不支持此品牌
    DomainNotFound         = 6401 //未找到此域名
    //删除域名
    DeleteDomainDenied    = 6500 //域名已经验证,不允许删除
    DeleteDomainUnSupport = 6501 //此产品不支持删除域名,请联系客服处理
    //获取域名列表
    PageNumError  = 6600 //页码输入有误
    PageSizeError = 6601 //记录数输入有误
    //重发邮件
    ReSendEmailFailed     = 6702 //重发邮件失败
    ReSendEmailNotSupport = 6703 //不支持邮件重发
    //订单状态
    TryReCommit   = 6800 //订单处理失败,请尝试重新提交
    OrderCreating = 6801 //订单生成中
    //下载证书
    CertCancelled = 6900 //证书已退款,被取消使用
    //联系人信息参数错误
    ContactNull      = 7000 //联系人不能为空
    FirstNameInvalid = 7001 //FirstName 错误
    LastNameInvalid  = 7002 //LastName 错误
    PositionInvalid  = 7003 //Position 错误
    EmailInvalid     = 7004 //Email 错误
    TelephoneInvalid = 7005 //电话 错误
    //企业信息参数错误
    OrgInfoNull                = 7100 //企业信息不能为空
    OrgNameInvalid             = 7101 //OrgName 错误
    CreditCodeInvalid          = 7102 //CreditCode 错误
    CountryInvalid             = 7103 //Country 错误
    ProvinceInvalid            = 7104 //Province 错误
    LocalityInvalid            = 7105 //Locality 错误
    AddressInvalid             = 7106 //Address 错误
    PostalCodeInvalid          = 7107 //PostalCode 错误
    JoiCountryInvalid          = 7108 //JoiCountry 错误
    JoiProvinceInvalid         = 7109 //JoiProvince 错误
    JoiLocalityInvalid         = 7110 //JoiLocality 错误
    RegistAddrInvalid          = 7111 //RegistAddr 错误
    DateOfIncorporationInvalid = 7112 //DateOfIncorporation 错误
    OrgExitsAlready            = 7113 //企业信息已存在
    OrgNotExist                = 7114 //公司不存在
    ProfileAddSuccessCertsExceeded = 8000 //任务添加成功,但证书数量已到达上限,本次任务放弃执行
    ProfileAddSuccessTaskRunError  = 8001 //任务添加成功,立即执行失败
    //生成csr
    KeyCurveInvalid           = 9000 //请检查加密曲线参数格式
    KeySizeInvalid            = 9001 //不支持您输入的加密位数
    EncryptionHashSignInvalid = 9002 //encryption与hashSign参数格式错误
    //多语言另加
    PayAimInvalid = 10000 //支付目的错误
    ReIssueErrToReCommit =10001 //重签出错,联系客服
    //ct log
    ParseURLError = 11000 //解析url错误
    ParseQueryError = 11001 //解析url query 错误
    ParamNullError =11002 //参数为空

API 接口总览

余额查询

GET

https://sslapi.0654.cn/finance/balance 

请求头 (Headers)

参数名类型说明示例值
apiKeytextapi秘钥abcdef

响应示例 (Response)

JSON状态码: 200

{
  "code": 200,
  "data": {
    "balance": 1312020,
    "toBeInvoicedAmount": 505849
  },
  "msg": "ok"
}

1.下订单 - 1.非flex产品(单域名和通配符)请求参数:
POST
https://sslapi.0654.cn/certificates/id/207


下订单注意:
1.所有ev证书(增强级)不支持ip和通配, 产品列表里 只有ov(企业级)支持ip
2.所有品牌的包含通配域名的证书都不再支持文件验证。比如 非flex通配符证书 以及flex的证书中含有通配域名都不支持文件验证

3.订单分flex和非flex产品,下单参数有所不同,请查看Example Request(示例请求)

请求参数解释:
参数名称	Req/Opt	类型	描述
year	optional	int	1.免费证书不需要此参数 2.申请几年的证书;仅支持1年的有(globalsign,alphassl),仅支持1-5年的有(sectigo,positivessl),支持1-6年的有(geotrust,rapidssl,digicert,securesite,thawte,securesitechina,geotrustchina)
dcvMethod	required	string	域名验证方式;
(1)除certum外的其他品牌ssl仅支持三种:file文件验证,dns验证,email邮件验证
(2)certum新增dns_txt和dns_cname验证方式
(3)globalsign和alphassl不支持邮件验证
csr	required	string	csr 提示:csr如果粘贴在json中后有格式错误,可以把csr的换行都换成\n,若ECC算法,仅支持P256,P384; 某些品牌不支持ECC算法
domainNames	optional	string	用逗号连接的域名字符串,没有子域名可不写,不包含主域名,主域名会默认取csr里的
contactInfo	required	object	联系人信息 SSL证书必需
..lastname	required	string	姓
..firstname	required	string	名
..position	required	string	职位
..email	required	string	邮箱
..telephone	required	string	电话
notifyUrl	optional	string	通知回调地址
note	optional	string	备注,255字符以内
includeRootDomain	optional	string	常用名称是否赠送上级域名。可选值是Y或N。
Y代表赠送,N代表不赠送。默认Y
includeWWWDomain	optional	string	常用名称是否赠送www域名。可选值是Y或N。
Y代表赠送,N代表不赠送。默认Y
orgInfo	optional	object	公司信息,ov/ev SSL证书必需
..orgName	required	string	公司名称
..creditCode	required	string	社会信用代码
..country	required	string	国家
..province	required	string	省份或州
..locality	required	string	城市
..address	required	string	地址
..postalCode	required	string	邮编
..telephone	required	string	手机号
..joiCountry	required	string	注册国家
..joiProvince	required	string	注册省份或州
..joiLocality	required	string	注册城市
..registryAddr	required	string	注册地址
..dateOfIncorporation	required	string	注册日期 ,格式必须为 yyyy-mm-dd 如:2006-01-02
响应参数解释
参数名称	类型	描述
code	int	状态码,200; 500及其他错误码
msg	string	错误或成功信息提示
data	object	返回信息描述的对象
..certID	int	证书编号(重签的证书的编号一定大于重签之前的证书编号)
..cost	int	订单金额(分)
..orderNo	string	订单编号(订单成功或出错都会返回)
..caOrderNo	string	ca订单编号
请求头 (Headers)
参数名	类型	说明	示例值
Content-Type	text	-	application/json
apiKey	text	-	<your apiKey>
请求体 (Body)
JSON
{
    "year": 1, 
    "dcvMethod": "dns", 
    "csr": "csr", 
    "contactInfo": {
        "lastname": "star", 
        "firstname": "moon", 
        "position": "it", 
        "email": "123@gmail.com", 
        "telephone": "12354678"
    }, 
    "notifyUrl":"https://test.com/notify",
    "orgInfo": {
      	"orgName": "your company name", 
        "creditCode": "X869112948", 
        "country": "US", 
        "province": "California", 
        "locality": "San Gabriel", 
        "address": "6148 Avon Avenue", 
        "postalCode": "91775", 
        "telephone": "+14028935615", 
        "joiCountry": "US", 
        "joiProvince": "California", 
        "joiLocality": "San Gabriel", 
        "registryAddr": "6148 Avon Avenue", 
        "dateOfIncorporation": "2010-03-12"
    }
}
响应示例 (Response)
JSON
{
  "code": 200,
  "msg": "ok",
  "data": {
    "certID": 142932802604630020,
    "cost": 123456,
    "orderNo": "20201232020789",
    "caOrderNo": "123"
  }
}

1.下订单 – 2.flex产品请求参数:

POST

https://sslapi.0654.cn/certificates/id/197 

下订单注意:

1.所有ev证书(增强级)不支持ip和通配, 产品列表里 只有ov(企业级)支持ip
2.所有品牌的包含通配域名的证书都不再支持文件验证。比如 非flex通配符证书 以及flex的证书中含有通配域名都不支持文件验证

3.订单分flex和非flex产品,下单参数有所不同,请查看Example Request(示例请求)

请求参数解释:

参数名称Req/Opt类型描述
yearoptionalint1.免费证书不需要此参数 2.申请几年的证书;仅支持1年的有(globalsign,alphassl),仅支持1-5年的有(sectigo,positivessl),支持1-6年的有(geotrust,rapidssl,digicert,securesite,thawte,securesitechina,geotrustchina)
dcvMethodrequiredstring域名验证方式;
(1)除certum外的其他品牌ssl仅支持三种:file文件验证,dns验证,email邮件验证
(2)certum新增dns_txt和dns_cname验证方式
(3)globalsign和alphassl不支持邮件验证
csrrequiredstringcsr 提示:csr如果粘贴在json中后有格式错误,可以把csr的换行都换成\n,若ECC算法,仅支持P256,P384; 某些品牌不支持ECC算法
domainNamesoptionalstring用逗号连接的域名字符串,没有子域名可不写,不包含主域名,主域名会默认取csr里的
contactInforequiredobject联系人信息 SSL证书必需
..lastnamerequiredstring
..firstnamerequiredstring
..positionrequiredstring职位
..emailrequiredstring邮箱
..telephonerequiredstring电话
notifyUrloptionalstring通知回调地址
noteoptionalstring备注,255字符以内
includeRootDomainoptionalstring常用名称是否赠送上级域名。可选值是Y或N。
Y代表赠送,N代表不赠送。默认Y
includeWWWDomainoptionalstring常用名称是否赠送www域名。可选值是Y或N。
Y代表赠送,N代表不赠送。默认Y
orgInfooptionalobject公司信息,ov/ev SSL证书必需
..orgNamerequiredstring公司名称
..creditCoderequiredstring社会信用代码
..countryrequiredstring国家
..provincerequiredstring省份或州
..localityrequiredstring城市
..addressrequiredstring地址
..postalCoderequiredstring邮编
..telephonerequiredstring手机号
..joiCountryrequiredstring注册国家
..joiProvincerequiredstring注册省份或州
..joiLocalityrequiredstring注册城市
..registryAddrrequiredstring注册地址
..dateOfIncorporationrequiredstring注册日期 ,格式必须为 yyyy-mm-dd 如:2006-01-02

响应参数解释

参数名称类型描述
codeint状态码,200; 500及其他错误码
msgstring错误或成功信息提示
dataobject返回信息描述的对象
..certIDint证书编号(重签的证书的编号一定大于重签之前的证书编号)
..costint订单金额(分)
..orderNostring订单编号(订单成功或出错都会返回)
..caOrderNostringca订单编号

请求头 (Headers)

参数名类型说明示例值
Content-Typetextapplication/json
apiKeytext<your apiKey>

请求体 (Body)

JSON

{
    "year": 1, 
    "dcvMethod": "dns", 
    "csr": "csr", 
    "domainNames": "1.example.com,*.demo.com", 
    "contactInfo": {
        "lastname": "star", 
        "firstname": "moon", 
        "position": "it", 
        "email": "123@gmail.com", 
        "telephone": "123546"
    }, 
    "notifyUrl":"https://test.com/testPush",
    "orgInfo": {
        "orgName": "your company name", 
        "creditCode": "X869112948", 
        "country": "US", 
        "province": "California", 
        "locality": "San Gabriel", 
        "address": "6148 Avon Avenue", 
        "postalCode": "91775", 
        "telephone": "+14028935615", 
        "joiCountry": "US", 
        "joiProvince": "California", 
        "joiLocality": "San Gabriel", 
        "registryAddr": "6148 Avon Avenue", 
        "dateOfIncorporation": "2010-03-12"
    }
}

响应示例 (Response)

JSON

{
  "code": 200,
  "msg": "ok",
  "data": {
    "certID": 142932802604630020,
    "cost": 123456,
    "orderNo": "20201232020789",
    "caOrderNo": "123"
  }
}

2.获取域名列表
GET
https://sslapi.0654.cn/certificates/domains/2022123456


响应参数解释
参数名称	类型	描述
code	int	状态码,200; 500及其他错误码
data	object	返回信息描述的对象
..domainList	object	域名的列表
.. ..dnsNames	Array	相同根域名组成的数组,他们公用一种验证方式. ip单独
.. ..domainID	int	域名id,仅digicert产品线(geotrust,rapidssl,digicert,securesite,thawte,securesitechina,geotrustchina)有,其他为0
.. ..email	string	邮箱验证时的邮箱
.. ..status	string	域名验证状态
.. ..dcvMethod	string	域名验证方式(返回的域名验证方式和请求时不一样,
(1)CNAME_CSR_HASH对应dns
(2)HTTP_CSR_HASH对应file
(3)EMAIL对应email
(4)DNS_TXT对应dns_txt
(5)DNS_CNAME对应dns_cname
.. ..fileDcvPath	string	域名验证方式为文件验证时需要用到的文件验证路径;验证方式为非文件验证时也会返回作为常用参数。注意:路径中的{FQDN}请替换成dnsNames 参数中的完整域名,例: "dnsNames": ["1.certbase.com","2.certbase.com"], 则文件验证路径为对应的两个:http://1.certbase.com/.well-known/pki-validation/gsdv.txt 和 http://2.certbase.com/.well-known/pki-validation/gsdv.txt。 若"dnsNames": "140.12.56.8",则 http://140.12.56.8/.well-known/pki-validation/gsdv.txt。 本次更新与之前的差别在于:之前的文件验证路径只需要顶级域名或ip进行文件验证即可,而现在是每个域名本身都要进行文件验证
.. ..recordType	string	用于验证的记录类型
.. ..hostRecord	string	用于验证的主机记录值
.. ..hashValue	string	用于验证的 hash值/token
.. ..uniqueValue	string	sectigo.possitivessl类证书重签后返回的唯一值
msg	string	错误或成功信息提示
请求头 (Headers)
参数名	类型	说明	示例值
apiKey	text	-	<your apiKey>
响应示例 (Response)
JSON
 {"code": 200, 
    "data": {
        "domainList": [
            {
                "dnsNames": ["1.certbase.com","2.certbase.com"], 
                "domainID": 0, 
                "email": "admin@certbase.com", 
                "status": "2002", 
                "dcvMethod": "CNAME_CSR_HASH", 
                "fileDcvPath": "http://{FQDN}/.well-known/pki-validation/gsdv.txt", 
                "recordType": "TXT", 
                "hostRecord": "@", 
                "hashValue": "jdhbfkdslfbkjndfskjnajd", 
                "uniqueValue": ""
            }, 
            {
                "dnsNames": ["1.bitcert.com","2.bitcert.com"], 
                "domainID": 0, 
                "email": "admin@bitcert.com", 
                "status": "2002", 
                "dcvMethod": "CNAME_CSR_HASH", 
                "fileDcvPath": "http://{FQDN}/.well-known/pki-validation/gsdv.txt",
                "recordType": "TXT", 
                "hostRecord": "@", 
                "hashValue": "thhsdfhslfbkjndfskjnajd", 
                "uniqueValue": ""
            },
            {
                "dnsNames": "140.12.56.8", 
                "domainID": 0, 
                "email": "", 
                "status": "2001", 
                "dcvMethod": "HTTP_CSR_HASH", 
                "fileDcvPath": "http://{FQDN}/.well-known/pki-validation/gsdv.txt",
                "recordType": "TXT", 
                "hostRecord": "@", 
                "hashValue": "wgtfkdslfbkjndfskjnajd", 
                "uniqueValue": ""
            }
        ]
    }, 
    "msg": "ok", 
}

3.请求验证域名
PUT
https://sslapi.0654.cn/certificates/verifyDomains/202201020304

响应参数解释
参数名称	类型	描述
code	int	状态码,200; 500及其他错误码
msg	string	错误或成功信息提示
data	object	返回信息描述的对象
请求头 (Headers)
参数名	类型	说明	示例值
apiKey	text	-	<your apiKey>
响应示例 (Response)
JSON
{
  "code": 200,
  "msg": "请求成功",
  "data": null
}

4.查看订单状态
GET
https://sslapi.0654.cn/certificates/status/202201020304


响应参数解释
参数名称	类型	描述
code	int	状态码,200; 500及其他错误码
data	object	返回信息描述的对象
..status	object	状态信息
.. ..certPrepareStatus	string	证书准备状态,请查看 "签发前状态汇总状态码"
.. ..certStatus	string	证书状态 请查看 "证书状态码"
.. ..dcvStatus	string	域名验证状态 请查看 "域名验证状态码"
.. ..evValidationStatus	string	ev证书企业验证状态 请查看 "ev验证状态码"
.. ..isReSignOrder	string	是否为重签订单,若是"Y",则所有状态都是重签后的订单状态
.. ..orderStatus	string	订单状态 请查看 "订单状态码"
.. ..ovValidationStatus	string	ov证书企业验证状态 请查看 "ov验证状态码"
请求头 (Headers)
参数名	类型	说明	示例值
apiKey	text	-	<your apiKey>
响应示例 (Response)
JSON
{
    "code": 200, 
    "data": {
        "status": {
            "certPrepareStatus": "2002", 
            "certStatus": "3004", 
            "dcvStatus": "2002", 
            "evValidationStatus": "2000", 
            "isReSignOrder": "N", 
            "orderStatus": "1002", 
            "ovValidationStatus": "2000", 
        }
    }, 
    "msg": "ok"
}

5.下载证书
GET
https://sslapi.0654.cn/certificates/download/202201020304


响应参数解释
参数名称	类型	描述
code	int	状态码,200; 500及其他错误码
data	object	返回信息描述的对象
..certInfo	object	证书信息
.. ..serialNumber	string	证书序列号
.. ..certContent	string	证书
.. ..midCertContent	string	中间证书
.. ..notBefore	int	证书签发日期 时间戳 (毫秒)
.. ..notAfter	int	证书到期日期 时间戳(毫秒)
.. ..commonName	string	证书的常用名称
.. ..domainNames	Array	证书包含的所有域名数组
.. ..sha1	string	证书的sha1值
.. ..sha256	string	证书的sha256值
.. ..issuerCommonName	string	颁发者通用名称
.. ..issuerCountry	string	颁发者国家
.. ..issuerOrg	string	颁发者组织
.. ..signatureAlgo	string	证书签名算法
.. ..keyCurve	string	秘钥曲线(encryption为ECDSA(又名ECC)时成对出现) 如signatureAlgo为ECDSA-SHA384,encryption为ECDSA,keyCurve为P256
.. ..encryption	string	加密算法
.. ..keyLength	int	私钥长度(encryption为RSA时成对出现)
msg	string	错误或成功信息提示
请求头 (Headers)
参数名	类型	说明	示例值
apiKey	text	-	<your apiKey>
响应示例 (Response)
JSON
{
  "code": 200,
  "data": {
    "certInfo": {
      "serialNumber": "ebdd502ca70645e0acdbf0c9a43f6af",
      "certContent": "-----BEGIN CERTIFICATE-----\nMIIFpDCCBIygAwIBAgIQDr3VAspzZF4Kzb8MmkP2rzANBgkqhkiG9w0BAQsFADCB\njzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQsQH\n/+YpBRT6Kd1WsedeyquzGBd3DPU94WGn6Kg7VHwP5/Iz7IhAYyNrtg4uVdqXwF0c\nEi4viTme6Deqo8Gizr5n7NlANwGaKKbNP2yiTLipp93bya1WRQvtiES4b17hYYMS\nOj6cikgJBJo=\n-----END CERTIFICATE-----\n",
      "midCertContent": "-----BEGIN CERTIFICATE-----\bxmRE1a6Vqe8YAsOf4vmSyrcjC8azjUeqkk+B5\nyOGBQMkKW+ESPMFgKuOXwIlCypTPRpgSabuY0MLTDXJLR27lk8QyKGOHQ+SwMj4K\n00u/I5sUKUErmgQfky3xxzlIPK1aEn8=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIFg6pKJmBHaIkU4MiRTOok3JMrO66BQavHHxW/BBC5gA\nCiIDEOUMsfnNkjcZ7Tvx5Dq2+UUTJnWvu6rvP3t3O9LEApE9GQDTF1w52z97GA1F\nzZOFli9d31kWTz9RvdVFGD/tSo7oBmF0Ixa1DVBzJ0RHfxBdiSprhTEUxOipakyA\nvGp4z7h/jnZymQyd/teRCBaho1+V\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb\nMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowAVGI/6ugLOpyypEBMs1OUIJqsi\nl2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3\nsmPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==\n-----END CERTIFICATE-----\n",
      "notBefore": 1606262400000,
      "notAfter": 1637884799000,
      "commonName": "test.com",
      "domainNames": [
        "test.com"
      ],
      "sha1": "77ddc84576d56661867c0f95a341642e9699d350",
      "sha256": "0e27a14fcb7a6014ab0500171438ce1eeaeffa7d6f2006b344d5d3e1ed2835f7",
      "issuerCommonName": "Sectigo RSA Domain Validation Secure Server CA",
      "issuerCountry": "GB",
      "issuerOrg": "Sectigo Limited",
      "signatureAlgo": "SHA256-RSA",
      "encryption": "RSA",
      "keyLength": 2048,
      "keyCurve": ""
    }
  },
  "msg": "ok"
}

6.重签订单
POST
https://sslapi.0654.cn/certificates/reissue


注意:免费证书不支持重签
请求参数解释
参数名称	Req/Opt	类型	描述
csr	required	string	csr 提示:csr如果粘贴在json中后有格式错误,可以把csr的换行都换成\n,若ECC算法,仅支持P256,P38; 某些品牌不可更换生成csr的常用名称 ; 某些品牌不支持ECC算法
dcvMethod	required	string	域名验证方式;
(1)除certum外的其他品牌ssl仅支持三种:file文件验证,dns验证,email邮件验证
(2)certum新增dns_txt和dns_cname验证方式
(3)globalsign和alphassl不支持邮件验证
domainNames	optional	string	用逗号连接的域名字符串,没有子域名可不写,不包含主域名,主域名会默认取csr里的
orderNo	required	string	要重签的订单号
includeRootDomain	optional	string	常用名称是否赠送上级域名。可选值是Y或N。
Y代表赠送,N代表不赠送。默认Y
includeWWWDomain	optional	string	常用名称是否赠送www域名。可选值是Y或N。
Y代表赠送,N代表不赠送。默认Y
响应参数解释
参数名称	类型	描述
code	int	状态码,200; 500及其他错误码
msg	string	错误或成功信息提示
data	object	返回信息描述的对象
..certID	int	新证书编号
..priceDiff	int	重签差价(分)
..caOrderNo	string	ca订单编号
请求头 (Headers)
参数名	类型	说明	示例值
Content-Type	text	-	application/json
apiKey	text	-	<your apiKey>
请求体 (Body)
JSON
{
    "csr": "string", 
    "dcvMethod": "string", 
    "domainNames": "string", 
    "orderNo": "string"
}
响应示例 (Response)
JSON
{
  "code": 200,
  "msg": "ok",
  "data": {
    "certID": 142932802604636670,
    "priceDiff": 66666,
    "caOrderNo": "123"
  }
}

7.更新域名验证方式
PUT
https://sslapi.0654.cn/certificates/dcv


code
注:  (1)除certum产品外,验证方式仅支持 :file, email, dns 必须小写,certum产品另加dns_txt,dns_cname两种验证方式
    (2)globalsign,alphassl不允许 修改   
请求参数解释
参数名称	Req/Opt	类型	描述
approverEmailPrefix	optional	string	邮件前缀
是newMethod为email时的必须参数,取值admin,webmaster,hostmaster,postmaster,administrator
newMethod	required	string	新的域名验证方式;
\*(1)除certum外的其他品牌ssl仅支持三种:file文件验证,dns验证,email邮件验证(2)certum新增dns_txt和dns_cname验证方式_*\_
(3)globalsign和alphassl修改请联系客服
orderNo	required	string	订单号
响应参数解释
参数名称	类型	描述
code	int	状态码,200; 500及其他错误码
msg	string	错误或成功信息提示
data	object	返回信息描述的对象
请求头 (Headers)
参数名	类型	说明	示例值
apiKey	text	-	<your apiKey>
Content-Type	text	-	application/json
请求体 (Body)
JSON
{
    "approverEmailPrefix": "admin", 
    "newMethod": "dns", 
    "orderNo": "202011161616021650"
}
响应示例 (Response)
JSON
{
  "code": 200,
  "data": null,
  "msg": "更新域名验证方式请求成功"
}

8.重发邮件
PUT
https://sslapi.0654.cn/certificates/reSendDcvEmail/202201020304


响应参数解释
参数名称	类型	描述
code	int	状态码,200; 500及其他错误码
msg	string	错误或成功信息提示
data	object	返回信息描述的对象
请求头 (Headers)
参数名	类型	说明	示例值
apiKey	text	-	<your apiKey>
响应示例 (Response)
JSON
{
  "code": 200,
  "msg": "发送成功",
  "data": null
}

9.重新生成dcvToken
POST
https://sslapi.0654.cn/certificates/dcv


注意:
可调用此接口的品牌见 产品列表 是否可调用重新生成dcvToken 列

请求头 (Headers)
参数名	类型	说明	示例值
apiKey	text	-	<your apiKey>
Content-Type	text	-	application/json
请求体 (Body)
JSON
{
    "orderNo": "13211465",
    "domain":"certbase.com"
}
响应示例 (Response)
JSON
{
  "code": 200,
  "msg": "ok",
  "data": {
    "dcvToken": "c3c2ww9vxmdwjn5cmlgrbqfs9sghltjy"
  }
}

10.取消订单
GET
https://sslapi.0654.cn/certificates/cancel/202201020304

响应参数解释
参数名称	类型	描述
code	int	状态码,200; 500及其他错误码
msg	string	错误或成功信息提示
data	object	返回信息描述的对象
请求头 (Headers)
参数名	类型	说明	示例值
apiKey	text	-	<your apiKey>
响应示例 (Response)
JSON
{
  "code": 200,
  "msg": "ok",
  "data": null
}

11.证书日志查询

GET

https://sslapi.0654.cn/certificates/ctLogs?domain=test.com&pageID=1&includeSubDomains= false 

请求参数解释

参数名称Req/Opt类型描述
domainrequiredstring域名
pageIDoptionalstring分页,页码ID
includeSubDomainsoptionalboolean是否包

响应参数解释

参数名称类型描述
codeint状态码,200; 500及其他错误码
msgstring错误或成功信息提示
dataobject返回信息描述的对象
..certsarray证书数组(固定10个证书)
.. ..subjectstring域名(常用名称)
.. ..hashstring证书哈希值(获取证书日志某证书详情必备参数certHash的值)
.. ..issuerstring颁发者
.. ..notBeforeint颁发日期
.. ..notAfterint过期日期
.. ..ctLogsCountintct日志数量
.. ..dnsNamesCountint证书包含的子域名总数
..currentPageint当前页序号
..lastPageIDstring上一页的页码ID (pageID参数可选值)
..nextPageIDstring下一页的页码ID (pageID参数可选值)
..totalPageint总页码数

请求头 (Headers)

参数名类型说明示例值
apiKeytext秘钥<your apiKey>

响应示例 (Response)

JSON

{
  "code": 200,
  "data": {
    "certs": [
      {
        "subject": "baidu.com",
        "hash": "TAqITLXks/lDBFpaVQxGp669B8zSSn5SXSOLj+O9Gfc=",
        "issuer": "GlobalSign Organization Validation CA - SHA256 - G2",
        "notBefore": 1555570576000,
        "notAfter": 1593063062000,
        "ctLogsCount": 6,
        "dnsNamesCount": 52
      },
      ...
      {
        "subject": "baidu.com",
        "hash": "5HrK7ywqpEZaaQxwabeHpITp0uIZbDbVPDMCx/QVM24=",
        "issuer": "GlobalSign Organization Validation CA - SHA256 - G2",
        "notBefore": 1571908623000,
        "notAfter": 1593063062000,
        "ctLogsCount": 9,
        "dnsNamesCount": 50
      }
    ],
    "currentPage": 4,
    "lastPageID": "YmFpZHUuY29tOnRydWU6ZmFsc2U6OkNCUVFBUT09",
    "nextPageID": "YmFpZHUuY29tOnRydWU6ZmFsc2U6OkNDZ1FBUT09",
    "totalPage": 18
  },
  "msg": "ok"
}

12.证书日志某证书详情

GET

https://sslapi.0654.cn/certificates/ctLogs/cert?certHash=AJ%2Bdx9ghIcyjs7QtAIWpTIRiwd1UVoPUOqLgzMKYWX4%3D 

请求参数解释

参数名称Req/Opt类型描述
certHashrequiredstring (urlEncode)证书hash值

响应参数解释

参数名称类型描述
codeint状态码,200; 500及其他错误码
msgstring错误或成功信息提示
dataobject返回信息描述的对象
..certInfoobject证书信息
.. ..subjectstringC=CN代表country为中国;O代表组织(公司);OU代表企业部门;L代表城市;ST代表省份;STREET代表地址;postalCode代表邮编;CN代表常用名称;E-mail代表邮箱
.. ..issuerstring颁发者
.. ..serialNumberstring序列号
.. ..notBeforeint颁发日期
.. ..notAfterint过期日期
.. ..dnsNamesarray证书包含的域名列表

请求头 (Headers)

参数名类型说明示例值
apiKeytext秘钥<your apiKey>

响应示例 (Response)

JSON

{
  "code": 200,
  "data": {
    "certInfo": {
      "subject": "C=CN, O=Beijing Baidu Netcom Science Technology Co., Ltd, OU=service operation department, L=beijing, ST=beijing, CN=baidu.com",
      "issuer": "C=BE, O=GlobalSign nv-sa, CN=GlobalSign Organization Validation CA - SHA256 - G2",
      "serialNumber": "72:58:78:36:6E:9F:56:E8:1D:41:88:48",
      "notBefore": 1585811098000,
      "notAfter": 1627277462000,
      "dnsNames": [
        "baidu.com",
        "baifubao.com",
        "www.baidu.cn",
        "www.baidu.com.cn",
        "mct.y.nuomi.com",
        "apollo.auto",
        "dwz.cn",
        "*.baidu.com",
        "*.baifubao.com",
        "*.baidustatic.com",
        "*.bdstatic.com",
        "*.bdimg.com",
        "*.hao123.com",
        "*.nuomi.com",
        "*.chuanke.com",
        "*.trustgo.com",
        "*.bce.baidu.com",
        "*.eyun.baidu.com",
        "*.map.baidu.com",
        "*.mbd.baidu.com",
        "*.fanyi.baidu.com",
        "*.baidubce.com",
        "*.mipcdn.com",
        "*.news.baidu.com",
        "*.baidupcs.com",
        "*.aipage.com",
        "*.aipage.cn",
        "*.bcehost.com",
        "*.safe.baidu.com",
        "*.im.baidu.com",
        "*.baiducontent.com",
        "*.dlnel.com",
        "*.dlnel.org",
        "*.dueros.baidu.com",
        "*.su.baidu.com",
        "*.91.com",
        "*.hao123.baidu.com",
        "*.apollo.auto",
        "*.xueshu.baidu.com",
        "*.bj.baidubce.com",
        "*.gz.baidubce.com",
        "*.smartapps.cn",
        "*.bdtjrcv.com",
        "*.hao222.com",
        "*.haokan.com",
        "*.pae.baidu.com",
        "*.vd.bdstatic.com",
        "click.hm.baidu.com",
        "log.hm.baidu.com",
        "cm.pos.baidu.com",
        "wn.pos.baidu.com",
        "update.pan.baidu.com"
      ]
    }
  },
  "msg": "ok"
}

13.订单筛选

GET

https://sslapi.0654.cn/certificates/orders?commonName=&certPrepareStatus=&pageNumber=&certStatus=&orderStatus=

请求参数解释

参数名称Req/Opt类型描述
commonNameoptionalstring常用名称(域名或公司名)
orderStatusoptionalstring订单状态
certPrepareStatusoptionalstring证书签发前准备状态
certStatusoptionalstring证书状态
cancelledoptionalstring订单是否已取消(Y/N)
dateCreatedoptionalstring订单创建时间或创建时间段(举例:2022-05-19T12:00:00或2022-05-19T12:00:00…2022-05-20T13:00:00)
pageNumberoptionalstring请求页码,如果订单数量超过100将会分页返回

响应参数解释

参数名称类型描述
codeint状态码,200; 500及其他错误码
msgstring错误或成功信息提示
dataobject返回信息描述的对象
..currentPageint当前页
..returnCountint当前返回订单数
..totalOrdersint总订单数
..totalPagesint总页数
..ordersarray订单数组(固定100个证书)
.. ..orderNostring订单号
.. ..productNostring产品编号
.. ..commonNamestring域名(常用名称)
.. ..orderStatusstring订单状态
.. ..ovValidationStatusstringov订单验证状态
.. ..evValidationStatusstringev订单验证状态
.. ..dcvStatusstring域名验证状态
.. ..certPrepareStatusstring证书签发前准备状态
.. ..certStatusstring证书状态
.. ..submitDateStampint订单提交(创建)时间戳
.. ..payDateStampint订单支付时间戳(未支付订单为 0)

请求头 (Headers)

参数名类型说明示例值
apiKeytext秘钥<your apiKey>

响应示例 (Response)

JSON

{
	"code": 200,
	"data": {
		"currentPage": 1,
		"orders": [{
				"orderNo": "2021062217143494639798",
				"productNo": "197",
				"commonName": "example.com",
				"orderStatus": "1001",
				"ovValidationStatus": "2000",
				"evValidationStatus": "2000",
				"dcvStatus": "2001",
				"certPrepareStatus": "2001",
				"certStatus": "3002",
				"submitDateStamp": 1624353275000,
				"payDateStamp": 0
			},
                   ...省略
			{
				"orderNo": "2021062214412634516222",
				"productNo": "197",
				"commonName": "example2.com",
				"orderStatus": "1002",
				"ovValidationStatus": "2000",
				"evValidationStatus": "2000",
				"dcvStatus": "2001",
				"certPrepareStatus": "2001",
				"certStatus": "3002",
				"submitDateStamp": 1624344086000,
				"payDateStamp": 1624344089000
			}
		],
		"returnCount": 100,
		"totalOrders": 636,
		"totalPages": 7
	},
	"msg": "ok"
}
展开评论

快速索引