更新证书
功能介绍
更新ELB证书。不能更新证书类型,但可以更新证书内容和私钥等。
注意:更新证书会影响当前证书已关联的监听器,请谨慎操作。
接口约束
如果待更新证书的域名不为空,且被监听器使用;则不允许更新该证书的域名为空,否则系统会返回409响应。
调用方法
请参见如何调用API。
URI
PUT /v3/{project_id}/elb/certificates/{certificate_id}
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
certificate_id |
是 |
String |
证书ID。 |
project_id |
是 |
String |
参数解释:项目ID。获取方式请参见获取项目ID。 约束限制:不涉及 取值范围:长度为32个字符,由小写字母和数字组成。 默认取值:不涉及 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
是 |
String |
参数解释:IAM鉴权Token。 约束限制:不涉及 取值范围:不涉及 默认取值:不涉及 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
certificate |
是 |
UpdateCertificateOption object |
参数解释:更新证书参数对象。 约束限制:不涉及 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
certificate |
否 |
String |
参数解释:证书内容。 支持最大11层证书链(含证书和证书链)。 约束限制:不涉及 取值范围:PEM编码格式,最大长度65536个字符。 默认取值:不涉及 |
description |
否 |
String |
参数解释:证书的描述。 约束限制:不涉及 取值范围:0-255个字符。 默认取值:不涉及 |
name |
否 |
String |
参数解释:证书的名称。 约束限制:不涉及 取值范围:0-255个字符。 默认取值:不涉及 |
private_key |
否 |
String |
参数解释:服务器证书的私钥。 约束限制:不涉及 取值范围:PEM编码格式,最大长度8192个字符。 默认取值:不涉及 |
domain |
否 |
String |
参数解释:服务器证书所签域名。 约束限制:该字段仅type为server时有效(其他类型证书,字段可传入,但不会生效)。 取值范围:总长度为0-10000,由若干普通域名或泛域名组成,域名之间以","分隔,不超过100个域名。
默认取值:不涉及 |
enc_certificate |
否 |
String |
参数解释:服务器SM双证书的证书内容。 支持最大11层证书链(含证书和证书链)。 约束限制:仅当type为server_sm时,才支持传入。 取值范围:PEM编码格式。最大长度65536字符。 默认取值:不涉及 |
enc_private_key |
否 |
String |
参数解释:服务器SM双证书的私钥。 约束限制:仅当type为server_sm时,才支持传入。 取值范围:PEM编码格式,最大长度8192个字符。 默认取值:不涉及 |
scm_certificate_id |
否 |
String |
参数解释:云证书管理服务(CCM)中的证书ID。 约束限制:仅记录证书ID,不验证其是否真实存在云证书管理服务中。并且需要将云证书管理服务中对应证书的内容手动设置到当前接口相应字段中(可能涉及字段certificate、private_key、enc_certificate和enc_private_key) 取值范围:不涉及 默认取值:不涉及 |
source |
否 |
String |
参数解释:标记当前证书来源。 约束限制:无 取值范围:
默认取值:不涉及 |
protection_status |
否 |
String |
参数解释:修改保护状态 约束限制:不涉及 取值范围:
默认取值:不涉及 |
protection_reason |
否 |
String |
参数解释:设置修改保护的原因 约束限制:仅当protection_status为consoleProtection时有效 取值范围:不涉及 默认取值:空 |
响应参数
状态码:200
参数 |
参数类型 |
描述 |
---|---|---|
request_id |
String |
参数解释:请求ID。 取值范围:由数字、小写字母和中划线(-)组成的字符串,自动生成。 |
certificate |
CertificateInfo object |
参数解释:ELB证书信息。注意:真正的证书在内层字段中。 |
参数 |
参数类型 |
描述 |
---|---|---|
admin_state_up |
Boolean |
参数解释:证书的管理状态。该字段当前无用,设置为true或者false都不影响证书使用。 取值范围:
|
certificate |
String |
参数解释:证书内容。支持最大11层证书链(含证书和证书链)。 取值范围:PEM编码格式,最大长度65536个字符。 |
description |
String |
参数解释:证书的描述。 取值范围:0-255个字符。 |
domain |
String |
参数解释:服务器证书所签域名。 取值范围:总长度为0-10000,由若干普通域名或泛域名组成,域名之间以","分隔,不超过100个域名。
|
id |
String |
参数解释:ELB证书管理对象ID。 取值范围:由32位数字和小写字母组成。 |
name |
String |
参数解释:证书的名称。 取值范围:0-255个字符。 |
private_key |
String |
参数解释:服务器证书的私钥。 取值范围:PEM编码格式,最大长度8192个字符。 |
type |
String |
参数解释:证书的类型。 取值范围:
|
created_at |
String |
参数解释:创建时间。 取值范围:格式:yyyy-MM-dd'T'HH:mm:ss'Z',UTC时区。 |
updated_at |
String |
参数解释:更新时间。 取值范围:格式:yyyy-MM-dd'T'HH:mm:ss'Z',UTC时区。 |
expire_time |
String |
参数解释:证书有效期的截止时间。 取值范围:格式:yyyy-MM-dd'T'HH:mm:ss'Z',UTC时区。 |
project_id |
String |
参数解释:项目ID。获取方式请参见获取项目ID。 取值范围:长度为32个字符,由小写字母和数字组成。 |
enc_certificate |
String |
参数解释:服务器SM双证书的证书内容。 支持最大11层证书链(含证书和证书链)。 取值范围:PEM编码格式。最大长度65536字符。 |
enc_private_key |
String |
参数解释:服务器SM双证书的私钥。 取值范围:PEM编码格式,最大长度8192个字符。 |
scm_certificate_id |
String |
参数解释:云证书管理服务(CCM)中的证书ID。 取值范围:不涉及 |
common_name |
String |
参数解释:证书绑定的主域名。 取值范围:不涉及 |
fingerprint |
String |
参数解释:证书指纹。 取值范围:不涉及 |
subject_alternative_names |
Array of strings |
参数解释:证书绑定的域名列表。 取值范围:不涉及 |
source |
String |
参数解释:标记当前证书来源。 取值范围:
|
protection_status |
String |
参数解释:修改保护状态。 取值范围:
|
protection_reason |
String |
参数解释:修改保护的原因。 取值范围:不涉及 |
请求示例
更新证书的名称和描述信息
PUT https://{ELB_Endpoint}/v3/99a3fff0d03c428eac3678da6a7d0f24/elb/certificates/233a325e5e3e4ce8beeb320aa714cc12 { "certificate" : { "name" : "My Certificate", "description" : "Update my Certificate." } }
响应示例
状态码:200
操作正常返回。
{ "certificate" : { "private_key" : "-----BEGIN PRIVATE KEY-----MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQVAbOLe5xNf4M253Wn9vhdUzojetjv4J+B7kYwsMhRcgdcJ8KCnX1nfzTvI2ksXlTQ2o9BkpStnPetB4s32ZiJRMlk+61iUUMNsHwK2WBX57JT3JgmyVbH8GbmRY0+H3sH1i72luna7rMMD30gLh6QoP3cq7PGWcuZKV7hjd1tjCTQukwMvqV8Icq39buNpIgDOWzEP5AzqXtCOFYn6RTH5SRug4hKNN7sT1eYMslHu7wtEBDKVgrLjOCe/W2f8rLT1zEsoAW2ChlZAPYUBkl/0XuTWRg3CohPPcI+UtlRSfvLDeeQ460swjbwgS/RbJh3sIwlCRLU08kEo04Z9H/AgMBAAECggEAEIeaQqHCWZk/HyYN0Am/GJSGFa2tD60SXY2fUieh8/HlfvCArftGgMaYWPSNCJRMXB7tPwpQu19esjz4Z/cR2Je4fTLPrffGUsHFgZjv5OQBZVe4a5Hj1OcgJYhwCqPs2d9i2wToYNBbcfgh8lSETq8YaXngBO6vES9LMhHkNKKrciu9YkInNEHu6uRJ5g/eGGX3KQynTvVIhnOVGAJvjTXcoU6fm7gYdHAD6jk9lc9MEGpfYI6AdHIwFZcT/RNAxhP82lg2gUJSgAu66FfDjMwQXKbafKdP3zq4Up8a7AlekrguPtfV1vWklg+bUFhgGaiAEYTpAUN9t2DVIiijgQKBgQDnYMMsaF0r557CM1CTXUqgCZo8MKeV2jf2drlxRRwRl33SksQbzAQ/qrLdT7GP3sCGqvkxWY2FPdFYf8kxGcCeZPcIeZYCQAM41pjtsaM8tVbLWVR8UtGBuQoPSph7JNF3Tm/JH/fbwjpjP7dtJ7n8EzkRUNE6aIMHOFEeych/PQKBgQDmf1bMogx63rTcwQ0PEZ9Vt7mTgKYK4aLriWgTWHXPZxUQaYhpjXo6+lMI6DpExiDgBAkMzJGIvS7yQiYWU+wthAr9urbWYdGZlS6VjoTkF6r7VZoILXX0fbuXh6lm8K8IQRfBpJff56p9phMwaBpDNDrfpHB5utBUxs40yIdp6wKBgQC69Cp/xUwTX7GdxQzEJctYiKnBHKcspAg38zJf3bGSXU/jR4eB1lVQhELGI9CbKSdzKM71GyEImix/T7FnJSHIWlho1qVo6AQyduNWnAQD15pr8KAdXGXAZZ1FQcb3KYa+2fflERmazdOTwjYZ0tGqZnXkEeMdSLkmqlCRigWhGQKBgDak/735uP20KKqhNehZpC2dJei7OiIgRhCS/dKASUXHSW4fptBnUxACYocdDxtY4VhafI7FPMdvGl8ioYbvlHFh+X0Xs9r1S8yeWnHoXMb6eXWmYKMJrAoveLa+2cFm1Agf7nLhA4R4lqm9IpV6SKegDUkR4fxp9pPyodZPqBLLAoGBAJkD4wHW54Pwd4Ctfk9ojHjWB7pQlUYpTZO9dm+4fpCMn9Okf43AE2yAOaAP94GdzdDJkxfciXKcsYr9IIukfaoXgjKR7p1zERiWZuFF63SB4aiyX1H7IX0MwHDZQO38a5gZaOm/BUlGKMWXzuEd3fy+1rCUwzOp9LSjtJYf4ege-----END PRIVATE KEY-----", "description" : "Update my Certificate.", "domain" : null, "created_at" : "2019-03-31T22:23:51Z", "expire_time" : "2045-11-17T13:25:47Z", "id" : "233a325e5e3e4ce8beeb320aa714cc12", "name" : "My Certificate", "certificate" : "-----BEGIN CERTIFICATE-----MIIC4TCCAcmgAwIBAgICEREwDQYJKoZIhvcNAQELBQAwFzEVMBMGA1UEAxMMTXlDb21wYW55IENBMB4XDTE4MDcwMjEzMjU0N1oXDTQ1MTExNzEzMjU0N1owFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0FQGzi3ucTX+DNud1p/b4XVM6I3rY7+Cfge5GMLDIUXIHXCfCgp19Z3807yNpLF5U0NqPQZKUrZz3rQeLN9mYiUTJZPutYlFDDbB8CtlgV+eyU9yYJslWx/Bm5kWNPh97B9Yu9pbp2u6zDA99IC4ekKD93KuzxlnLmSle4Y3dbYwk0LpMDL6lfCHKt/W7jaSIAzlsxD+QM6l7QjhWJ+kUx+UkboOISjTe7E9XmDLJR7u8LRAQylYKy4zgnv1tn/Ky09cxLKAFtgoZWQD2FAZJf9F7k1kYNwqITz3CPlLZUUn7yw3nkOOtLMI28IEv0WyYd7CMJQkS1NPJBKNOGfR/wIDAQABozowODAhBgNVHREEGjAYggpkb21haW4uY29thwQKuUvJhwR/AAABMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQA8lMQJxaTey7EjXtRLSVlEAMftAQPG6jijNQuvIBQYUDauDT4W2XUZ5wAnjiOyQ83va672K1G9s8n6xlH+xwwdSNnozaKzC87vwSeZKIOdl9I5I98TGKI6OoDaezmzCwQYtHBMVQ4c7Ml8554Ft1mWSt4dMAK2rzNYjvPRLYlzp1HMnI6hkjPk4PCZwKnha0dlScati9CCt3UzXSNJOSLalKdHErH08Iqd+1BchScxCfk0xNITn1HZZGmI+vbmunok3A2lucI14rnsrcbkGYqxGikySN6B2cRLBDK4Y3wChiW6NVYtVqcx5/mZiYsGDVN+9QBd0eYUHce+77s96i3I-----END CERTIFICATE-----", "admin_state_up" : true, "project_id" : "99a3fff0d03c428eac3678da6a7d0f24", "updated_at" : "2019-03-31T23:26:49Z", "type" : "server", "common_name" : "www.example.com", "fingerprint" : "869df7fcb441c2ef3fb9329437815972eeb1ef0e", "subject_alternative_names" : [ "www.example.com" ] }, "request_id" : "d9abea6b-98ee-4ad4-8c5d-185ded48742f" }
SDK代码示例
SDK代码示例如下。
更新证书的名称和描述信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
package com.huaweicloud.sdk.test; import com.huaweicloud.sdk.core.auth.ICredential; import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; import com.huaweicloud.sdk.elb.v3.region.ElbRegion; import com.huaweicloud.sdk.elb.v3.*; import com.huaweicloud.sdk.elb.v3.model.*; public class UpdateCertificateSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); String projectId = "{project_id}"; ICredential auth = new BasicCredentials() .withProjectId(projectId) .withAk(ak) .withSk(sk); ElbClient client = ElbClient.newBuilder() .withCredential(auth) .withRegion(ElbRegion.valueOf("<YOUR REGION>")) .build(); UpdateCertificateRequest request = new UpdateCertificateRequest(); request.withCertificateId("{certificate_id}"); UpdateCertificateRequestBody body = new UpdateCertificateRequestBody(); UpdateCertificateOption certificatebody = new UpdateCertificateOption(); certificatebody.withDescription("Update my Certificate.") .withName("My Certificate"); body.withCertificate(certificatebody); request.withBody(body); try { UpdateCertificateResponse response = client.updateCertificate(request); System.out.println(response.toString()); } catch (ConnectionException e) { e.printStackTrace(); } catch (RequestTimeoutException e) { e.printStackTrace(); } catch (ServiceResponseException e) { e.printStackTrace(); System.out.println(e.getHttpStatusCode()); System.out.println(e.getRequestId()); System.out.println(e.getErrorCode()); System.out.println(e.getErrorMsg()); } } } |
更新证书的名称和描述信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkelb.v3.region.elb_region import ElbRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkelb.v3 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] projectId = "{project_id}" credentials = BasicCredentials(ak, sk, projectId) client = ElbClient.new_builder() \ .with_credentials(credentials) \ .with_region(ElbRegion.value_of("<YOUR REGION>")) \ .build() try: request = UpdateCertificateRequest() request.certificate_id = "{certificate_id}" certificatebody = UpdateCertificateOption( description="Update my Certificate.", name="My Certificate" ) request.body = UpdateCertificateRequestBody( certificate=certificatebody ) response = client.update_certificate(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
更新证书的名称和描述信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" elb "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/elb/v3" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/elb/v3/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/elb/v3/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") projectId := "{project_id}" auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). Build() client := elb.NewElbClient( elb.ElbClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.UpdateCertificateRequest{} request.CertificateId = "{certificate_id}" descriptionCertificate:= "Update my Certificate." nameCertificate:= "My Certificate" certificatebody := &model.UpdateCertificateOption{ Description: &descriptionCertificate, Name: &nameCertificate, } request.Body = &model.UpdateCertificateRequestBody{ Certificate: certificatebody, } response, err := client.UpdateCertificate(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。
状态码
状态码 |
描述 |
---|---|
200 |
操作正常返回。 |
错误码
请参见错误码。