SSL证书(https证书)的API接口文档
时间 : 2025-02-27 16:15:10 浏览量 : 314
重要说明:本接口文档是对接 ssl.douhao.com 的SSL证书在线生成平台,接入好后用户可以自主下单,秒级签发!具体代理价格详情请联系QQ:2881668427
下单流程:用户提交域名和邮箱,他那边先发起预付款检测,如果款足则发起csr生成,接着下单、获取域名列表、发起验证、查询验证结果、发起下载获取证书内容。(备注:切换域名验证方式在获取域名列表之后,验证完成之前。)
特别提醒:证书下载生成证书文件是在您自己客户端内执行的,请求逗号SSL的证书下载接口只是返回证书内容,生成证书需要用到第一步生成的csritem内容
接口请求方式:post
请求头:代码示例(PHP),注意apikey前面需要一个空格。
$header = array('apiKey: 你的APIKEY', 'Content-Type: application/json');
各个接口参数以json格式post至接口地址即可,返回的也是json格式。
生成csr接口:https://ssl.douhao.com/?m=api&a=getcsr
需传入参数:domain,email
参数说明:domain是用户提交的域名,多个域名用英文逗号分开。Email是用户提交的邮箱地址
返回数据示例:{"code":200,"data":{"csr":"csr值","key":"key值"},"msg":"ok"}
预付款检测接口:
检测账户预付款金额是否能够支付当前订单:https://ssl.douhao.com/?m=api&a=checkuser
需传入参数:domain
参数说明:domain是用户提交的域名,多个域名用英文逗号分开。
返回内容:200表示正常;202表示金额不足。
下单接口:https://ssl.douhao.com/?m=api&a=getorder
请求参数解释:
PHP示例:
$item['gd'] = true或者false;true表示只申请传入的单域名,false表示非单域名,会有赠送的www子域名
$item['year'] = 1;
$item['dcvMethod'] = 验证方式,字母须小写,目前有DNS_TXT和DNS_CNAME两种;
$item['csr'] = csr接口返回csr字段值;
$item['csritem'] = csr接口返回的全部内容,json格式的,例:{"code":200,"data":{"csr":"csr值","key":"key值"},"msg":"ok"};
$item['out_trade_no'] = 商家自定义订单号(仅支持字母与数字长度不要超过32);
$item['trade_no'] = 交易订单号(支付宝或微信的);
$item['domainNames'] = 域名,多个域名用英文逗号分开;
$item['contactInfo']['lastname'] = 姓;
$item['contactInfo']['firstname'] = 名;
$item['contactInfo']['position'] = 职务;
$item['contactInfo']['email'] = 邮箱;
$item['contactInfo']['telephone'] = 手机号;
$data = json_encode($item);
以上数据$data最终为json格式,POST提交至接口即可。
如果成功则返回证书订单号,如果返回无任何结果,请检查apikey是否正确和预付款金额是否充足。
重要提示:订单号有两个,一个是支付端订单号,一个是商家自定义的编号。支付端订单号是由支付宝或微信生成的,纯数字的,如果模拟生成也需要用纯数字的,可以用年月日+时间戳+随机数字,长度不要超过28位。商家自定义编号可以字母+数字组合,长度不要超过32位。
获取域名列表:https://ssl.douhao.com/?m=api&a=getdomain
需传入参数:order
参数说明:order是下单接口返回的ssl证书订单号orderNo
响应参数解释:
参数名称 | 类型 | 描述 |
---|---|---|
code | int | 状态码,200; 500及其他错误码 |
data | object | 返回信息描述的对象 |
..domainList | object | 域名的列表 |
.. ..dnsNames | Array | 相同根域名组成的数组,他们公用一种验证方式. ip单独 |
.. ..domainID | int | 域名id,仅digicert产品线(geotrust,rapidssl,digicert,securesite,thawte,securesitechina,geotrustchina)有,其他为0 |
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.example.com","2.example.com"], 则文件验证路径为对应的两个:http://1.example.com/.well-known/pki-validation/gsdv.txt 和 http://2.example.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 | 错误或成功信息提示 |
发起验证:https://ssl.douhao.com/?m=api&a=toyz
需传入参数:order
参数说明:order是下单接口返回的ssl证书订单号orderNo
响应参数解释
参数名称 | 类型 | 描述 |
---|---|---|
code | int | 状态码,200; 500及其他错误码 |
msg | string | 错误或成功信息提示 |
data | object | 返回信息描述的对象 |
查询验证结果:https://ssl.douhao.com/?m=api&a=chayz
需传入参数:order
参数说明:order是下单接口返回的ssl证书订单号orderNo
响应参数解释:
参数名称 | 类型 | 描述 |
---|---|---|
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验证状态码" |
切换域名验证方式:https://ssl.douhao.com/?m=api&a=changeyz
需传入参数:order,mod
参数说明:order是下单接口返回的ssl证书订单号orderNo;mod是验证方式,可选值DNS_TXT和DNS_CNAME两种
备注:fileDcvPath 文件验证的话 这个参数返回验证路径,路径中的{FQDN}请替换成dnsNames 参数中的完整域名,例: "dnsNames": ["1.example.com","2.example.com"], 则文件验证路径为对应的两个:http://1.example.com/.well-known/pki-validation/gsdv.txt 和 http://2.example.com/.well-known/pki-validation/gsdv.txt。
获取证书信息:https://ssl.douhao.com/?m=api&a=download
需传入参数:order
参数说明:order是下单接口返回的ssl证书订单号orderNo
证书签发的推送信息解释
参数名称 | 类型 | 描述 |
---|---|---|
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时成对出现) |
证书状态码
状态码 | 类型 | 说明 |
---|---|---|
3002 | string | 已支付,等待签发 |
3003 | string | 支付成功,但提交到ca申请订单异常,请联系客服 |
3004 | string | 已签发 |
3005 | string | 已取消 |
3006 | string | 支付成功,但提交到ca申请订单超时,请联系客服 |
域名验证状态码
状态码 | 类型 | 说明 |
---|---|---|
2001 | string | 未验证 |
2002 | string | 已验证 |
2001-CAA | string | 未验证且待签发域名存在CAA记录。需要用户删除CAA记录或添加对应ca的记录后重新下单才可以签发 |
2002-CAA | string | 已验证但待签发域名存在CAA记录。需要用户删除CAA记录或添加对应ca的记录后重新下单才可以签发 |
错误信息格式
code值见错误码
{ "code": 6000, "msg": "错误信息", "data": null }
错误码
//下订单接口 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 //域名不合法
可能问题解答:
1、如果出现404,是什么问题?
说明order不在请求头里,要通过POST数据过去,post数据跟请求头分开的。并且order这个数据以json格式post提交,{“order”:“23132f123dsa1f231ds3a1f”} 比如传递order数据,就是这个格式整个json部分post提交过来就行了。
2、传参数一直空白怎么回事?
答:csritem不要传json格式,需要json_decode($csritem,true);