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

创建CA

功能介绍

创建CA,分以下三种情况:

  • 创建根CA,根据参数介绍中,填写必选值;

  • 创建从属CA,并需要直接激活该证书,根据参数介绍中,填写必选值;

  • 创建从属CA,不需要直接激活该证书,请求body中只需要缺少此三个参数之一即可:issuer_id、signature_algorithm、validity。

URI

POST /v1/private-certificate-authorities

请求参数

表1 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

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

表2 请求Body参数

参数

是否必选

参数类型

描述

type

String

创建的CA类型。

  • ROOT : 根CA

  • SUBORDINATE : 从属CA

distinguished_name

DistinguishedName object

证书名称配置,详情请参见DistinguishedName字段数据结构说明。

key_algorithm

String

密钥算法,可选值如下:

  • RSA2048 : RSA算法,密钥长度2048位;

  • RSA4096 : RSA算法,密钥长度4096位;

  • EC256 : 椭圆曲线算法(Elliptic Curve Digital Signature Algorithm (ECDSA)),密钥长度256位;

  • EC384 : 椭圆曲线算法(Elliptic Curve Digital Signature Algorithm (ECDSA)),密钥长度384位。

validity

Validity object

证书有效期,分以下三种情况:

  • 创建根CA,为必填值;

  • 创建从属CA,并需要直接激活该证书,为必填值;

  • 创建从属CA,不需要直接激活该证书,本参数值将被忽略,激活证书时需要再次传入。

说明:

详情请参见Validity字段数据结构说明。

issuer_id

String

父CA证书ID,分以下三种情况:

  • 创建根CA,根CA为自签名证书,无父CA,将忽略该参数;

  • 创建从属CA,并需要直接激活该证书,为必填值;

  • 创建从属CA,不需要直接激活该证书,本参数值将被忽略,激活证书时需要再次传入。

最小长度:36

最大长度:36

path_length

Integer

CA证书路径长度,分以下三种情况:

  • 创建根CA,为便于后期对证书层级的扩展,根CA默认不对路径长度做限制,故将忽略该参数。证书层级规划可由从属CA做限制;

  • 创建从属CA,并需要直接激活该证书,用户可自定义。缺省值为0;

  • 创建从属CA,不需要直接激活该证书,本参数值将被忽略。激活证书时若要自定义,需要再次传入;

最小值:0

最大值:6

signature_algorithm

String

签名哈希算法。

  • 分以下三种情况:

    • 创建根CA,为必填值;

    • 创建从属CA,并需要直接激活该证书,为必填值;

    • 创建从属CA,不需要直接激活该证书,本参数值将被忽略,激活证书时需要再次传入。

  • 可选值如下:

    • SHA256

    • SHA384

    • SHA512

key_usages

Array of strings

密钥用法,具体标准参见RFC 5280中:4.2.1.3节

  • digitalSignature : 数字签名;

  • nonRepudiation : 不可抵赖;

  • keyEncipherment : 密钥用于加密密钥数据;

  • dataEncipherment : 用于加密数据;

  • keyAgreement : 密钥协商;

  • keyCertSign : 签发证书;

  • cRLSign : 签发吊销列表;

  • encipherOnly : 仅用于加密;

  • decipherOnly : 仅用于解密。

说明:

缺省值如下:

  • 根CA证书:默认为**[digitalSignature,keyCertSign,cRLSign]**,忽略用户传入值;

  • 从属CA证书:默认为**[digitalSignature,keyCertSign,cRLSign]**,支持用户自定义。

crl_configuration

CrlConfiguration object

证书CRL配置,详情请参见CrlConfiguration字段数据结构说明。

表3 DistinguishedName

参数

是否必选

参数类型

描述

common_name

String

证书通用名称(CN)。

最小长度:1

最大长度:64

country

String

国家编码,需符合正则"[A-Za-z]{2}"。

最小长度:2

最大长度:2

state

String

省市名称。

最小长度:1

最大长度:128

locality

String

地区名称。

最小长度:1

最大长度:128

organization

String

组织名称。

最小长度:1

最大长度:64

organizational_unit

String

组织单元名称。

最小长度:1

最大长度:64

表4 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)。

表5 CrlConfiguration

参数

是否必选

参数类型

描述

enabled

Boolean

是否启用CRL发布功能。

  • true

  • false

crl_name

String

吊销列表文件名称。

说明:

若用户不指定,系统将默认采用当前证书的父CA ID。

obs_bucket_name

String

OBS桶名称。

说明:

当需要启用CRL发布功能:

  • 此参数为必填项,且用户必须已创建委托授权,授予PCA服务对OBS的相关权限,具体参见本文档:证书吊销处理>查看是否具有委托权限证书吊销处理>创建委托

  • 指定的OBS桶必须存在,否则将报错。

valid_days

Integer

CRL更新周期,单位为"天"。当启用CRL发布功能,为必填项。

最小值:7

最大值:30

响应参数

状态码: 200

表6 响应Body参数

参数

参数类型

描述

ca_id

String

当前签发的CA证书ID。

最小长度:36

最大长度:36

状态码: 400

表7 响应Body参数

参数

参数类型

描述

error_code

String

错误请求返回的错误码。

最小长度:3

最大长度:36

error_msg

String

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

最小长度:0

最大长度:1024

状态码: 401

表8 响应Body参数

参数

参数类型

描述

error_code

String

错误请求返回的错误码。

最小长度:3

最大长度:36

error_msg

String

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

最小长度:0

最大长度:1024

状态码: 403

表9 响应Body参数

参数

参数类型

描述

error_code

String

错误请求返回的错误码。

最小长度:3

最大长度:36

error_msg

String

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

最小长度:0

最大长度:1024

状态码: 404

表10 响应Body参数

参数

参数类型

描述

error_code

String

错误请求返回的错误码。

最小长度:3

最大长度:36

error_msg

String

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

最小长度:0

最大长度:1024

状态码: 500

表11 响应Body参数

参数

参数类型

描述

error_code

String

错误请求返回的错误码。

最小长度:3

最大长度:36

error_msg

String

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

最小长度:0

最大长度:1024

请求示例

创建CA证书,请求头中的X-Auth-Token字段需要填写token,且该token需要具有本API的访问权限。

POST https://ccm.ae-ad-1.myhuaweicloud.com/v1/private-certificate-authorities

{
  "type" : "ROOT",
  "key_algorithm" : "RSA4096",
  "signature_algorithm" : "SHA512",
  "distinguished_name" : {
    "country" : "your country abbreviation",
    "state" : "your state",
    "locality" : "your locality",
    "organization" : "your organization",
    "organizational_unit" : "your unit",
    "common_name" : "your CN"
  },
  "validity" : {
    "type" : "YEAR",
    "value" : 3
  },
  "crl_configuration" : {
    "enabled" : false,
    "obs_bucket_name" : "demoBucket",
    "valid_days" : 8
  }
}

响应示例

状态码: 200

请求已成功

{
  "ca_id" : "66504812-fedc-414a-9b7c-4c1836398524"
}

状态码: 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

服务内部错误。

错误码

请参见错误码