API参考
更新时间:2024-03-19
1 简介
证书管理模块主要用于管理用户的SSL证书,方便用户录入以及查看SSL证书。
本文档适用于开发人员,主要提供接口为创建证书,查看证书列表等。
1.1 名词解释
名词 | 说明 |
---|---|
certId | 证书ID, 全局唯一 |
certName | 证书自定义名称 |
certServerData | 服务器证书 |
certPrivateData | 证书私钥 |
certLinkData | 证书链数据 |
certCommonName | 证书通用名称 |
certDNSNames | 证书包含的域名 |
certStartTime | 证书生效时间 |
certStopTime | 证书到期时间 |
uploadPublicKey | 上传证书公钥,用来加密数据。之后需要使用对应的私钥机密数据 |
status | 证书使用状态,UNUSED表示未使用,IN_USE表示使用中 |
expired | 证书是否过期,true表示已经过期 |
certType | 证书类型,1表示服务端证书,私钥为必填项;2表示客户端证书,私钥为非必填项 |
resources | 证书绑定的资源列表 |
serviceName | 证书绑定的资源所属的服务 |
resourceId | 证书绑定的资源在其所属服务中的id |
1.2 格式规范
参数 | 说明 |
---|---|
certId | 格式:“cert-xxxxxxxxxxxx”(12位随机字符串),例子:“cert-5atue8m3sxsv”。 |
2.调用方式
证书服务 API以Restful API的形式提供。
2.1 请求结构
2.1.1 通信协议
目前支持HTTP,暂不支持HTTPS。
2.1.2 请求方法
不同类型的API使用不同的请求方法,如下所示:
API类型 | 请求方法 |
---|---|
读取资源 | GET |
修改资源 | PUT |
批量查询/创建资源 | POST |
删除资源 | DELETE |
获取资源状态 | HEAD |
2.1.3 字符编码
请求和返回结果都使用UTF-8编码。
2.2 公共参数
2.2.1 公共请求头
头域 | 是否必须 | 说明 |
---|---|---|
Authorization | 必须 | 见认证机制 |
Content-Type | 必须 | 应该总是application/json; charset=utf-8 |
x-bce-date | 必须 | 请求时间,格式见[时间格式](#6.2 时间格式)。服务器会比较该时间与当前服务器时间,如果两者相差超过30分钟,则返回RequestExpired错误 |
2.2.2 公共响应头
头域 | 说明 |
---|---|
Content-Type | 总是application/json; charset=utf-8 |
x-bce-request-id | 对应请求的[requestId](#6.3 RequestId) |
2.2.3 认证机制
3.api列表
3.1 创建证书
方法 | API | 说明 |
---|---|---|
POST | /v1/certificate | 创建证书 |
请求参数
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
certName | String | 必须 | 证书的名称。长度限制为1-65个字符,以字母开头,只允许包含字母、数字、’-‘、’/’、’.’、’’,Java正则表达式` ^[a-zA-Z]a-zA-Z0-9\-/\.]{2,64}$` |
certServerData | String | 必须 | 服务器证书的数据内容 (Base64编码) |
certPrivateData | String | 必须 | 证书的私钥数据内容 (Base64编码) |
certLinkData | String | 可选 | 证书链数据内容 (Base64编码) |
certType | Integer | 可选 | 证书类型,非必填,默认为1 |
返回参数
返回值为一个certificate对象(只包含certId和certName)。
可能异常
异常code | 说明 |
---|---|
CertExceedLimit (409) | 超过用户最大证书数 |
UnmatchedPairParameterInvalidException (400) | 证书有效时间不包含当前时间 |
PrivateKeyParameterInvalid (400) | 私钥解析异常 |
CertificateParameterInvalid (400) | 证书解析异常 |
CertChainParameterInvalid (400) | 证书链解析异常 |
UnmatchedPairParameterInvalid (400) | 公钥私钥不匹配 |
请求示例
POST /v1/certificate HTTP/1.1
HOST: certificate.baidubce.com
Authorization: {authorization}
Content-Type: application/json; charset=utf-8
x-bce-date: 2014-06-01T23:00:10Z
{
"certName": "TestCert",
"certServerData": "-----BEGIN CERTIFICATE-----\ngBs4mWchJjzl0IM3B+TrAD...\n-----END CERTIFICATE-----",
"certPrivateData": "-----BEGIN RSA PRIVATE KEY-----\n6JCfAxrrh7AoCg0jhqjgN/by0U2jwG/xFe...\n-----END RSA PRIVATE KEY-----"
}
返回示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
x-bce-request-id: 9ebc57ed-1ff5-480f-b5b1-6847ff54f2b4
{
"certId": "cert-5atue8m3sxsv",
"certName": "TestCert"
}
3.2 修改证书名称
方法 | API | 说明 |
---|---|---|
PUT | /v1/certificate/{certId}?certName | 修改证书名称 |
可能异常
异常code | 说明 |
---|---|
AccessDeniedException | 无权限访问 |
ResourceNotFoundException | 证书不存在 |
请求参数
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
certName | String | 必须 | 证书名称 |
请求示例
PUT /v1/certificate/cert-5atue8m3sxsv?certName HTTP/1.1
HOST: certificate.baidubce.com
Authorization: {authorization}
Content-Type: application/json; charset=utf-8
x-bce-date: 2014-06-01T23:00:10Z
{
"certName": "TestCert"
}
返回示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
x-bce-request-id: 9ebc57ed-1ff5-480f-b5b1-6847ff54f2b4
3.3 根据证书名查询证书
方法 | API | 说明 |
---|---|---|
GET | /v1/certificate?certName={certName} | 根据证书名查询用户的证书 |
请求参数
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
certName | String | 必须 | 证书名称 |
返回参数
参数名称 | 参数类型 | 说明 |
---|---|---|
certs | List<certificate> | 由certificate组成的数组 |
请求示例
GET /v1/certificate?certName=TestCert HTTP/1.1
HOST: certificate.baidubce.com
Authorization: {authorization}
Content-Type: application/json; charset=utf-8
x-bce-date: 2014-06-01T23:00:10Z
返回示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
x-bce-request-id: 9ebc57ed-1ff5-480f-b5b1-6847ff54f2b4
{
"certs": [
{
"certId": "cert-5atue8m3sxsv",
"certName": "TestCert",
"certCommonName": "httpstest.baidu.com",
"certStartTime": "2014-06-01T23:00:10Z",
"certStopTime": "2015-06-01T23:00:10Z",
"certCreateTime": "2014-06-01T23:00:10Z",
"certUpdateTime": "2014-06-01T23:00:10Z"
}
]
}
3.4 查看证书列表
方法 | API | 说明 |
---|---|---|
GET | /v1/certificate | 查看用户的证书列表 |
返回参数
参数名称 | 参数类型 | 说明 |
---|---|---|
certs | List<certificate> | 由certificate组成的数组 |
请求示例
GET /v1/certificate HTTP/1.1
HOST: certificate.baidubce.com
Authorization: {authorization}
Content-Type: application/json; charset=utf-8
x-bce-date: 2014-06-01T23:00:10Z
返回示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
x-bce-request-id: 9ebc57ed-1ff5-480f-b5b1-6847ff54f2b4
{
"certs": [
{
"certId": "cert-5atue8m3sxsv",
"certName": "TestCert",
"certCommonName": "httpstest.baidu.com",
"certStartTime": "2014-06-01T23:00:10Z",
"certStopTime": "2015-06-01T23:00:10Z",
"certCreateTime": "2014-06-01T23:00:10Z",
"certUpdateTime": "2014-06-01T23:00:10Z"
},
{
"certId": "cert-xsdfwerdty67",
"certName": "TestCertFail",
"certCommonName": "httpstestfail.baidu.com",
"certStartTime": "2014-06-01T23:00:10Z",
"certStopTime": "2015-06-01T23:00:10Z",
"certCreateTime": "2014-06-01T23:00:10Z",
"certUpdateTime": "2014-06-01T23:00:10Z"
}
]
}
3.5 查看证书列表详情
方法 | API | 说明 |
---|---|---|
GET | /v1/certificate/detail | 查看用户的证书列表详情,相比普通的查询证书列表,证书中多了证书域名和使用状态信息 |
返回参数
参数名称 | 参数类型 | 说明 |
---|---|---|
certs | List<certificateDetail> | 由certificateDetail组成的数组 |
参数名称 | 参数类型 | 说明 |
---|---|---|
certId | String | 证书ID |
certName | String | 证书名称 |
certCommonName | String | 证书通用名称 |
certStartTime | DateTime | 证书生效时间 |
certStopTime | DateTime | 证书到期时间 |
certCreateTime | DateTime | 证书创建时间 |
certUpdateTime | DateTime | 证书更新时间 |
certType | Integer | 证书类型 |
certDNSNames | String | 证书包含的域名列表,用英文逗号隔开 |
resources | List<Resource> | 证书绑定的资源列表 |
status | String | 证书使用状态,UNUSED表示未使用,IN_USE表示使用中 |
expired | boolean | 证书是否过期 |
参数名称 | 参数类型 | 说明 |
---|---|---|
serviceName | String | 证书绑定的资源所属的服务包括:opencdn,blb,BAE3(bch),lss,bss |
resourceId | String | 证书绑定的资源在其所属服务中的id |
请求示例
GET /v1/certificate/detail HTTP/1.1
HOST: certificate.baidubce.com
Authorization: {authorization}
Content-Type: application/json; charset=utf-8
x-bce-date: 2014-06-01T23:00:10Z
返回示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
x-bce-request-id: 9ebc57ed-1ff5-480f-b5b1-6847ff54f2b4
{
"certs": [
{
"certId": "cert-5atue8m3sxsv",
"certName": "TestCert",
"certCommonName": "httpstest.baidu.com",
"certStartTime": "2014-06-01T23:00:10Z",
"certStopTime": "2015-06-01T23:00:10Z",
"certCreateTime": "2014-06-01T23:00:10Z",
"certUpdateTime": "2014-06-01T23:00:10Z",
"certDNSNames": "baidu.com",
"certType": 1,
"resources": [
{
"serviceName": "blb",
"resourceId": "blb_resource_1"
},
{
"serviceName": "blb",
"resourceId": "blb_resource_2"
},
{
"serviceName": "opencdn",
"resourceId": "cdn_resource_1"
}
],
"status": "IN_USE",
"expired": false
},
{
"certId": "cert-xsdfwerdty67",
"certName": "TestCertFail",
"certCommonName": "httpstestfail.baidu.com",
"certStartTime": "2014-06-01T23:00:10Z",
"certStopTime": "2015-06-01T23:00:10Z",
"certCreateTime": "2014-06-01T23:00:10Z",
"certUpdateTime": "2014-06-01T23:00:10Z",
"certDNSNames": "baidu.com",
"certType": 1,
"resources": [],
"status": "UNUSED",
"expired": true
}
]
}
3.6 获取证书信息(无证书公钥私钥)
方法 | API | 说明 |
---|---|---|
GET | /v1/certificate/{certId} | 获取证书ID为{certId}的应用信息 |
返回参数
返回值为一个certificate对象
参数名称 | 参数类型 | 说明 |
---|---|---|
certId | String | 证书ID |
certName | String | 证书名称 |
certCommonName | String | 证书通用名称 |
certFingerprint | String | 证书指纹 |
certStartTime | DateTime | 证书生效时间 |
certStopTime | DateTime | 证书到期时间 |
certCreateTime | DateTime | 证书创建时间 |
certUpdateTime | DateTime | 证书更新时间 |
certType | Integer | 证书类型 |
可能异常
异常code | 说明 |
---|---|
AccessDeniedException | 无权限访问 |
ResourceNotFoundException | 证书不存在 |
请求示例
GET /v1/certificate/cert-5atue8m3sxsv HTTP/1.1
HOST: certificate.baidubce.com
Authorization: {authorization}
Content-Type: application/json; charset=utf-8
x-bce-date: 2014-06-01T23:00:10Z
返回示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
x-bce-request-id: 9ebc57ed-1ff5-480f-b5b1-6847ff54f2b4
{
"certId": "cert-5atue8m3sxsv",
"certName": "TestCert",
"certCommonName": "httpstest.baidu.com",
"certStartTime": "2014-06-01T23:00:10Z",
"certStopTime": "2015-06-01T23:00:10Z",
"certCreateTime": "2014-06-01T23:00:10Z",
"certUpdateTime": "2014-06-01T23:00:10Z",
"certType": 1
}
3.7 删除证书
方法 | API | 说明 |
---|---|---|
DELETE | /v1/certificate/{certId} | 删除证书 |
可能异常
异常code | 说明 |
---|---|
OperationNotAllowedException | 证书使用中 |
AccessDeniedException | 无权限访问 |
ResourceNotFoundException | 证书不存在 |
请求示例
DELETE /v1/certificate/cert-5atue8m3sxsv HTTP/1.1
HOST: certificate.baidubce.com
Authorization: {authorization}
Content-Type: application/json; charset=utf-8
x-bce-date: 2014-06-01T23:00:10Z
返回示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
x-bce-request-id: 9ebc57ed-1ff5-480f-b5b1-6847ff54f2b4
3.8 替换证书(id不变)
方法 | API | 说明 |
---|---|---|
PUT | /v1/certificate/{certId}?certData | 替换过期且不在使用中的证书 |
请求参数
参数名称 | 参数类型 | 是否必须 | 说明 |
---|---|---|---|
certName | String | 必须 | 证书的名称。长度限制为1-65个字符,以字母开头,只允许包含字母、数字、’-‘、’/’、’.’、’’,Java正则表达式` ^[a-zA-Z]a-zA-Z0-9\-/\.]{2,64}$` |
certServerData | String | 必须 | 服务器证书的数据内容 (Base64编码) |
certPrivateData | String | 必须 | 证书的私钥数据内容 (Base64编码) |
certLinkData | String | 可选 | 证书链数据内容 (Base64编码) |
certType | Integer | 可选 | 证书类型,非必填,默认为1 |
可能异常
异常code | 说明 |
---|---|
OperationNotAllowedException(409) | 证书使用中或者证书 |
AccessDeniedException(403) | 证书非本用户或子用户无该证书运维权限 |
ResourceNotFoundException(404) | 无证书 |
CertExceedLimit (409) | 超过用户最大证书数 |
UnmatchedPairParameterInvalidException (400) | 证书有效时间不包含当前时间 |
PrivateKeyParameterInvalid (400) | 私钥解析异常 |
CertificateParameterInvalid (400) | 证书解析异常 |
CertChainParameterInvalid (400) | 证书链解析异常 |
UnmatchedPairParameterInvalid (400) | 公钥私钥不匹配 |
请求示例
PUT /v1/certificate/cert-5atue8m3sxsv?certData HTTP/1.1
HOST: certificate.baidubce.com
Authorization: {authorization}
Content-Type: application/json; charset=utf-8
x-bce-date: 2014-06-01T23:00:10Z
{
"certName": "TestCert",
"certServerData": "-----BEGIN CERTIFICATE-----\ngBs4mWchJjzl0IM3B+TrAD...\n-----END CERTIFICATE-----",
"certPrivateData": "-----BEGIN RSA PRIVATE KEY-----\n6JCfAxrrh7AoCg0jhqjgN/by0U2jwG/xFe...\n-----END RSA PRIVATE KEY-----",
}
返回示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
x-bce-request-id: 9ebc57ed-1ff5-480f-b5b1-6847ff54f2b4
3.9 获取证书数据(包含私钥)
方法 | API | 说明 |
---|---|---|
GET | /v1/certificate/{certId}/rawData | 获取证书ID为{certId}的应用信息 |
调用身份
支持子用户身份调用,子用户需被授予CASReadAccessPolicy或CASOperateAccessPolicy权限。
返回参数
返回值为包含证书私钥的certificate对象
参数名称 | 参数类型 | 说明 |
---|---|---|
certId | String | 证书ID |
certName | String | 证书名称 |
certServerData | String | 公钥证书 |
certPrivateKey | String | 证书私钥 |
certLinkData | String | 证书链,包含多个证书,不包括服务器证书 |
certType | Integer | 证书类型 |
可能异常
异常code | 说明 |
---|---|
AccessDeniedException | 无权限访问 |
ResourceNotFoundException | 证书不存在 |
请求示例
GET /v1/certificate/cert-5atue8m3sxsv/rawData HTTP/1.1
HOST: certificate.baidubce.com
Authorization: {authorization}
Content-Type: application/json; charset=utf-8
x-bce-date: 2014-06-01T23:00:10Z
返回示例
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
x-bce-request-id: 9ebc57ed-1ff5-480f-b5b1-6847ff54f2b4
{
"certId": "cert-5atue8m3sxsv",
"certName": "TestCert",
"certServerData": "-----BEGIN CERTIFICATE-----\n......data.......\n-----END CERTIFICATE-----",
"certPrivateKey": "-----BEGIN RSA PRIVATE KEY-----......data......\n-----END RSA PRIVATE KEY-----",
"certLinkData": "-----BEGIN CERTIFICATE-----\n......data2.......\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\n......data3.......\n-----END CERTIFICATE-----",
"certType": 1
}
6 附表
6.1 错误状态码
CODE | MESSAGE | HTTP Status Code | 说明 |
---|---|---|---|
OperationNotAllowed | Resource status conflict. | 409 CONFLICT | 资源状态冲突,不能执行请求操作 |
ResourceNotFound | Resource not found. | 404 NOT_FOUND | 请求资源不存在 |
ParametersNotChanged | Parameters not changed. | 403 FORBIDDEN | 请求参数未发生变化 |
ResourceNameDuplicated | Resource name duplicated. | 409 CONFLICT | 资源名称重复 |
ParametersInvalid | Parameters invalid. | 400 BAD REQUEST | 请求参数不合法 |
AccessDenied | Access denied. | 403 FORBIDDEN | 无权限访问 |
6.2 时间格式
日期与时间的表示有多种方式。为统一起见,除非是约定俗成或者有相应规范的,凡需要日期时间表示的地方一律采用UTC时间,遵循ISO 8601,并做以下约束:
- 表示日期一律采用
YYYY-MM-DD
方式,例如2014-06-01
表示2014年6月1日 - 表示时间一律采用
hh:mm:ss
方式,并在最后加一个大写字母Z表示UTC时间。例如23:00:10Z
表示UTC时间23点0分10秒。 - 凡涉及日期和时间合并表示时,在两者中间加大写字母T,例如
2014-06-01T23:00:10Z
表示UTC时间2014年6月1日23点0分10秒。
6.3 RequestId
所有请求都应该唯一地对应一个ID,用于标识该请求。requestId可用于问题定位、性能分析等等多个场景。所有的日志都应该带有requestId以便后续分析。