API参考

1 简介

证书管理模块主要用于管理用户的SSL证书,方便用户录入以及查看SSL证书。

本文档适用于开发人员,主要提供接口为创建证书,查看证书列表等。

1.1 名词解释

名词 说明
certId 证书ID, 全局唯一
certName 证书自定义名称
certServerData 服务器证书
certPrivateData 证书私钥
certLinkData 证书链数据
certCommonName 证书通用名称
certStartTime 证书生效时间
certStopTime 证书到期时间
uploadPublicKey 上传证书公钥,用来加密数据。之后需要使用对应的私钥机密数据

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 必须 请求时间,格式见时间格式。服务器会比较该时间与当前服务器时间,如果两者相差超过30分钟,则返回RequestExpired错误

2.2.2 公共响应头

头域 说明
Content-Type 总是application/json; charset=utf-8
x-bce-request-id 对应请求的requestId

2.2.3 认证机制

公有云API规范-认证机制

3 创建证书

方法 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编码)

返回参数

返回值为一个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",

}

4 修改证书名称

方法 API 说明
PUT /v1/certificate/{certId}?certName 修改证书名称

请求参数

参数名称 参数类型 是否必须 说明
certName String 必须 证书名称

请求示例

PUT /v1/certificate/cert-5atue8m3sxsv?certName HTTP/1.1
HOST: certificate.bj.bce-internal.baidu.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

5 查看证书列表

方法 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"
        }
    ]
}

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 请求参数不合法

6.2 时间格式

日期与时间的表示有多种方式。为统一起见,除非是约定俗成或者有相应规范的,凡需要日期时间表示的地方一律采用UTC时间,遵循ISO 8601,并做以下约束:

  1. 表示日期一律采用YYYY-MM-DD方式,例如2014-06-01表示2014年6月1日
  2. 表示时间一律采用hh:mm:ss方式,并在最后加一个大写字母Z表示UTC时间。例如23:00:10Z表示UTC时间23点0分10秒。
  3. 凡涉及日期和时间合并表示时,在两者中间加大写字母T,例如2014-06-01T23:00:10Z表示UTC时间2014年6月1日23点0分10秒。

5.3 RequestId

所有请求都应该唯一地对应一个ID,用于标识该请求。requestId可用于问题定位、性能分析等等多个场景。所有的日志都应该带有requestId以便后续分析。