更新时间:2022-12-22 GMT+08:00

通过CSR签发证书

功能介绍

通过CSR签发证书。功能约束如下:

  • 1、当前默认参数如下:

    • CA 默认参数:

      • keyUsage: digitalSignature, keyCertSign, cRLSign,优先采用CSR中的参数;

      • SignatureHashAlgorithm: SHA384;

      • PathLength:0 (可自定义)。

    • 私有证书:

      • keyUsage: digitalSignature keyAgreement,优先采用CSR中的参数;

      • SignatureHashAlgorithm: SHA384;

  • 2、当传入的type为INTERMEDIATE_CA时,创建出的从属CA证书,有以下限制:

    • 不占用CA配额。在查询CA列表时,不会返回该证书;

    • 只支持通过以下两个接口获取其信息:

      • GET /v1/private-certificate-authorities/{ca_id} 获取证书详情

      • POST /v1/private-certificate-authorities/{ca_id}/export 导出证书

    • 本接口返回的certificate_id即代表从属CA的ca_id

    • 无法用于签发证书,密钥在用户侧。

  • 3、当type为ENTITY_CERT时,创建出的私有证书,有以下特点:

    • 占用私有证书配额。在查询私有证书列表时,会返回该证书;

    • 除了导出时不包含密钥信息(密钥在用户端),其余用法与其它私有证书一致。

注:需要使用“\r\n”或“\n”代替换行符,将CSR转换成一串字符,可参考示例请求。注:目前,证书的组织信息、公钥算法以及公钥内容等均来自CSR文件,暂不支持API传入。

URI

POST /v1/private-certificates/csr

请求参数

表1 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户token,通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。

表2 请求Body参数

参数

是否必选

参数类型

描述

issuer_id

String

父CA证书ID。

最小长度:36

最大长度:36

csr

String

证书签名请求。请使用“\r\n”或“\n”替代证书签名请求中的换行符,若通过console端请求此接口,则无需做符号转换。

最大长度:5120

validity

Validity object

证书有效期,详情请参见Validity字段数据结构说明。

type

String

证书类型,用于区分从属CA与私有证书。

  • ENTITY_CERT : 签发私有证书,为缺省值;

  • INTERMEDIATE_CA : 签发从属CA。

path_length

Integer

路径长度,仅当签发从属CA时有效。

最小值:0

最大值:6

subject_alternative_names

Array of SubjectAlternativeName objects

主体备用名称(本接口预留参数,当前在后端被忽略),详情请参见SubjectAlternativeName字段数据结构说明。

表3 Validity

参数

是否必选

参数类型

描述

type

String

有效期类型,为必填值:

  • YEAR : 年(12个月)

  • MONTH : 月(统一按31天)

  • DAY : 日

  • HOUR : 小时

value

Integer

证书有效期值,与type对应的类型值,换算成年需满足以下规则:

  • 根CA,有效期小于等于30年;

  • 从属CA与私有证书,有效期小于等于20年。

start_from

Integer

起始时间,为可选值:

  • 格式为时间戳(毫秒级),如1645146939688代表2022-02-18 09:15:39;

  • 不早于当前时间5分钟,即start_from > (current_time - 5min)。

表4 SubjectAlternativeName

参数

是否必选

参数类型

描述

type

String

备用名称类型,当前仅支持DNS、IP、EMAIL、URI。

  • DNS

  • IP

  • EMAIL

  • URI

value

String

对应备用名称类型的值。

  • DNS类型,长度为不超过253;

  • IP类型,长度不超过39,支持IPV4、IPV6;

  • EMAIL类型,长度不超过256;

  • URI类型,长度不超过253。

响应参数

状态码: 200

表5 响应Body参数

参数

参数类型

描述

certificate_id

String

当前签发的证书ID。

最小长度:36

最大长度:36

状态码: 400

表6 响应Body参数

参数

参数类型

描述

error_code

String

错误请求返回的错误码。

最小长度:3

最大长度:36

error_msg

String

错误请求返回的错误信息。

最小长度:0

最大长度:1024

状态码: 401

表7 响应Body参数

参数

参数类型

描述

error_code

String

错误请求返回的错误码。

最小长度:3

最大长度:36

error_msg

String

错误请求返回的错误信息。

最小长度:0

最大长度:1024

状态码: 403

表8 响应Body参数

参数

参数类型

描述

error_code

String

错误请求返回的错误码。

最小长度:3

最大长度:36

error_msg

String

错误请求返回的错误信息。

最小长度:0

最大长度:1024

状态码: 404

表9 响应Body参数

参数

参数类型

描述

error_code

String

错误请求返回的错误码。

最小长度:3

最大长度:36

error_msg

String

错误请求返回的错误信息。

最小长度:0

最大长度:1024

状态码: 500

表10 响应Body参数

参数

参数类型

描述

error_code

String

错误请求返回的错误码。

最小长度:3

最大长度:36

error_msg

String

错误请求返回的错误信息。

最小长度:0

最大长度:1024

请求示例

通过CSR签发证书,请求头中的X-Auth-Token字段需要填写token,且该token需要具有本API的访问权限。

POST https://ccm.ae-ad-1.myhuaweicloud.com/v1/private-certificates/csr

{
  "csr" : "-----BEGIN CERTIFICATE REQUEST-----\\nMIICyTCCAbECAQAwXjELMAkGA1UEBhMCQ04xEDAOBgNVBAgTB3NpY2hhdW4xEDAO\\nBgNVBAcTB2NoZW5nZHUxCzAJBgNVBAoTAkhXMQswCQYDVQQLEwJJVDERMA8GA1UE\\nAxMIdGVzdC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCZ4q5z\\nxqK/L/FC9x2jESeUW5GB6zS5rVxT0WLTCTv9d1LtWBLsRIinATYTYiP1pNo4/pBq\\nHlM3IiUDkc896CJerYlNzOIjTaV4GjCZvPrxSHU5toJvIDflBsY+gnzbT1ol/y0r\\n3yb9dx7eeF5rPR+U8RTw+Ov/ZNRb+0CY30hrXMdrWjp5dtLGTlr5EFYxlKNOPCkR\\n+6BGyJnC9PWSuqwsykFbgMRkcBaNAxa59dRhMF50pvx2Vs929vFrMi+ofDELUOqz\\n1vyjaEA3pn3AGJGXZgrGNbSfz12ixgGLes4cQD21GCIAWgnBQ7b1ru2V8ImUfyh0\\nyvTEyHJTuFbQ+257AgMBAAGgJjAkBgkqhkiG9w0BCQ4xFzAVMBMGA1UdEQQMMAqC\\nCHRlc3QuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQBKfjZuYsz4s0wb1POIWn41eiAB\\np53qb63QKWILN9z8dLktcdSl3lPfcfPZpXv++QPtn3LR9rJKBawusk6SPXbvOGgS\\n5J+6eM8kVW2O3gHFgoaMcPYVtiO7ekG6o25qx6+Rj84wbFdmpOiCc8AwrLEBwzYV\\np1zaprWQu6PxBulkYPa3FLcntDdi7B67r0YTpxVvo1K7vHYFboDvPz7xG57QIFIM\\nwGd1OegariMT3N8gBOzLZc+jqLpxgo4xoNqBHMo6DEmKLdWdzU4ljpuGK9had99k\\nvQ5vft/Qra3v1uq2lOm/G92b0uA9Y1t2bMHobtAnuXL0HmY9XcLdzpC3f8h8\\n-----END CERTIFICATE REQUEST-----",
  "validity" : {
    "type" : "YEAR",
    "value" : 3
  },
  "issuer_id" : "2cb2878b-6cd1-460d-bd25-afe655159bdc"
}

响应示例

状态码: 200

请求已成功

{
  "certificate_id" : "e3e10fc6-5dff-4a70-9cb5-320d258a6215"
}

状态码: 400

请求参数有误。

{
  "error_code" : "PCA.XXX",
  "error_msg" : "XXX"
}

状态码: 401

被请求的页面需要鉴权。

{
  "error_code" : "PCA.XXX",
  "error_msg" : "XXX"
}

状态码: 403

认证失败。

{
  "error_code" : "PCA.XXX",
  "error_msg" : "XXX"
}

状态码: 404

资源不存在或资源未找到。

{
  "error_code" : "PCA.XXX",
  "error_msg" : "XXX"
}

状态码: 500

服务内部错误。

{
  "error_code" : "PCA.XXX",
  "error_msg" : "XXX"
}

状态码

状态码

描述

200

请求已成功

400

请求参数有误。

401

被请求的页面需要鉴权。

403

认证失败。

404

资源不存在或资源未找到。

500

服务内部错误。

错误码

请参见错误码