申请与重签证书流程

接口说明与产品
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证书签发的推送信息解释
| 参数名称 | 类型 | 描述 |
|---|---|---|
| auth | object | 身份验证对象(已弃用,仅做保留) |
| ..authToken | string | 待解密字符串 |
| ..randomStr | string | 随机字符串, authToken的解密结果应与此相等 |
| notifyInfo | object | 通知消息对象 |
| ..orderNo | string | 订单编号 |
| ..certID | int | 证书编号 |
| ..status | string | 订单状态代码 3004 |
| ..statusDesc | string | 状态描述 issued |
| ..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时成对出现) |
6.2.1证书取消的推送信息:
code
{
"auth": {
"authToken": "c55eed1e30e4f3cb36de07c9f76d50c8",
"randomStr": "success"
},
"notifyInfo": {
"orderNo": "202001016666",
"certID": 142932802604630016,
"status": "3005",
"statusDesc": "canceld"
}
}
6.2.2证书取消的推送参数解释
| 参数名称 | 类型 | 描述 |
|---|---|---|
| auth | object | 身份验证对象(已弃用,仅做保留) |
| ..authToken | string | 待解密字符串 |
| ..randomStr | string | 随机字符串, authToken的解密结果应与此相等 |
| notifyInfo | object | 通知消息对象 |
| ..orderNo | string | 订单编号 |
| ..certID | int | 证书编号 |
| ..status | string | 订单状态代码 |
| ..statusDesc | string | 状态描述 |
订单状态码
| 状态码 | 类型 | 说明 |
|---|---|---|
| 1001 | string | 未支付(订单未支付或重签的差额未支付) |
| 1002 | string | 已支付 |
| 1003 | string | 支付成功,但提交到ca申请订单异常,请联系客服 |
| 1004 | string | 已取消 |
| 1006 | string | 支付成功,但提交到ca申请订单超时,请联系客服 |
证书状态码
| 状态码 | 类型 | 说明 |
|---|---|---|
| 3002 | string | 已支付,等待签发 |
| 3003 | string | 支付成功,但提交到ca申请订单异常,请联系客服 |
| 3004 | string | 已签发 |
| 3005 | string | 已取消 |
| 3006 | string | 支付成功,但提交到ca申请订单超时,请联系客服 |
重签状态码
| 状态码 | 类型 | 说明 |
|---|---|---|
| “” 空 | string | 还未申请重签 |
| 5001 | string | 重签申请中 |
| 5002 | string | 重签申请成功 |
| 5003 | string | 重签申请失败 |
| 5004 | string | 重签需要补差价,但没有补交(暗示余额不足),仅与1001有关,但当订单状态为1002时则不需关注 |
域名验证状态码
| 状态码 | 类型 | 说明 |
|---|---|---|
| 2001 | string | 未验证 |
| 2002 | string | 已验证 |
ov验证状态码
| 状态码 | 类型 | 说明 |
|---|---|---|
| 2000 | string | 不需要此验证 |
| 2001 | string | 未验证 |
| 2002 | string | 已验证 |
ev验证状态码
| 状态码 | 类型 | 说明 |
|---|---|---|
| 2000 | string | 不需要此验证 |
| 2001 | string | 未验证 |
| 2002 | string | 已验证 |
签发前状态汇总状态码
| 状态码 | 类型 | 说明 |
|---|---|---|
| 2001 | string | 未验证 |
| 2002 | string | 已验证 |
错误信息格式
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)
| 参数名 | 类型 | 说明 | 示例值 |
|---|---|---|---|
| apiKey | text | api秘钥 | 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 | 类型 | 描述 |
|---|---|---|---|
| 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 | 职位 |
| 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",
"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 | 类型 | 描述 |
|---|---|---|---|
| domain | required | string | 域名 |
| pageID | optional | string | 分页,页码ID |
| includeSubDomains | optional | boolean | 是否包 |
响应参数解释
| 参数名称 | 类型 | 描述 |
|---|---|---|
| code | int | 状态码,200; 500及其他错误码 |
| msg | string | 错误或成功信息提示 |
| data | object | 返回信息描述的对象 |
| ..certs | array | 证书数组(固定10个证书) |
| .. ..subject | string | 域名(常用名称) |
| .. ..hash | string | 证书哈希值(获取证书日志某证书详情必备参数certHash的值) |
| .. ..issuer | string | 颁发者 |
| .. ..notBefore | int | 颁发日期 |
| .. ..notAfter | int | 过期日期 |
| .. ..ctLogsCount | int | ct日志数量 |
| .. ..dnsNamesCount | int | 证书包含的子域名总数 |
| ..currentPage | int | 当前页序号 |
| ..lastPageID | string | 上一页的页码ID (pageID参数可选值) |
| ..nextPageID | string | 下一页的页码ID (pageID参数可选值) |
| ..totalPage | int | 总页码数 |
请求头 (Headers)
| 参数名 | 类型 | 说明 | 示例值 |
|---|---|---|---|
| apiKey | text | 秘钥 | <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 | 类型 | 描述 |
|---|---|---|---|
| certHash | required | string (urlEncode) | 证书hash值 |
响应参数解释
| 参数名称 | 类型 | 描述 |
|---|---|---|
| code | int | 状态码,200; 500及其他错误码 |
| msg | string | 错误或成功信息提示 |
| data | object | 返回信息描述的对象 |
| ..certInfo | object | 证书信息 |
| .. ..subject | string | C=CN代表country为中国;O代表组织(公司);OU代表企业部门;L代表城市;ST代表省份;STREET代表地址;postalCode代表邮编;CN代表常用名称;E-mail代表邮箱 |
| .. ..issuer | string | 颁发者 |
| .. ..serialNumber | string | 序列号 |
| .. ..notBefore | int | 颁发日期 |
| .. ..notAfter | int | 过期日期 |
| .. ..dnsNames | array | 证书包含的域名列表 |
请求头 (Headers)
| 参数名 | 类型 | 说明 | 示例值 |
|---|---|---|---|
| apiKey | text | 秘钥 | <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 | 类型 | 描述 |
|---|---|---|---|
| commonName | optional | string | 常用名称(域名或公司名) |
| orderStatus | optional | string | 订单状态 |
| certPrepareStatus | optional | string | 证书签发前准备状态 |
| certStatus | optional | string | 证书状态 |
| cancelled | optional | string | 订单是否已取消(Y/N) |
| dateCreated | optional | string | 订单创建时间或创建时间段(举例:2022-05-19T12:00:00或2022-05-19T12:00:00…2022-05-20T13:00:00) |
| pageNumber | optional | string | 请求页码,如果订单数量超过100将会分页返回 |
响应参数解释
| 参数名称 | 类型 | 描述 |
|---|---|---|
| code | int | 状态码,200; 500及其他错误码 |
| msg | string | 错误或成功信息提示 |
| data | object | 返回信息描述的对象 |
| ..currentPage | int | 当前页 |
| ..returnCount | int | 当前返回订单数 |
| ..totalOrders | int | 总订单数 |
| ..totalPages | int | 总页数 |
| ..orders | array | 订单数组(固定100个证书) |
| .. ..orderNo | string | 订单号 |
| .. ..productNo | string | 产品编号 |
| .. ..commonName | string | 域名(常用名称) |
| .. ..orderStatus | string | 订单状态 |
| .. ..ovValidationStatus | string | ov订单验证状态 |
| .. ..evValidationStatus | string | ev订单验证状态 |
| .. ..dcvStatus | string | 域名验证状态 |
| .. ..certPrepareStatus | string | 证书签发前准备状态 |
| .. ..certStatus | string | 证书状态 |
| .. ..submitDateStamp | int | 订单提交(创建)时间戳 |
| .. ..payDateStamp | int | 订单支付时间戳(未支付订单为 0) |
请求头 (Headers)
| 参数名 | 类型 | 说明 | 示例值 |
|---|---|---|---|
| apiKey | text | 秘钥 | <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"
}
