# 证书托管
#### 使用场景
如果您需要通过HTTPS的方式访问桶的自定义域名，那么您需要为自定义域名配置对应的证书。在 HTTPS 协议中，数字证书是确保通信安全、数据完整性和身份验证的核心组件，其重要性主要体现在以下几个方面：
- 身份验证，确保服务器身份可信。可防止中间人攻击，通过证书验证服务器的真实身份，避免用户连接到伪造的钓鱼网站。在某些场景（如企业内部系统）中，还可以借助证书进行Https双向验证，要求客户端提供证书，实现服务器对客户端的身份验证，进一步增强安全性。
- 数据加密，保护通信内容机密性。建立加密通道，确保客户端与服务器之间传输的数据（如密码、信用卡信息、聊天内容等）被加密，即使被截获也无法读取。
- 数据完整性，防止内容被篡改。在数据传输过程中，HTTPS通过哈希函数（如 SHA-256）生成消息摘要，并使用会话密钥加密，确保数据在传输中未被中间人篡改或替换。
 
#### 工作原理
HTTPS协议通过TLS/SSL加密机制实现客户端到服务器的端到端数据加密，同时通过证书验证服务器身份，确保数据传输的机密性、完整性以及数据发送方的身份正确。
使用HTTPS协议访问OBS，需要根据访问域名的不同配置有效的SSL证书：
- **桶默认域名：** 格式为*bucketname* .obs.*regionid*.myhuaweicloud.com，由华为云统一管理SSL证书，默认支持HTTPS访问，无需额外配置，直接使用"https://"前缀访问即可。
- **自定义域名：** 需要您在为桶配置自定义域名时，同时配置证书，详情请参见[配置自定义域名](https://support.huaweicloud.com/usermanual-obs/obs_03_0032.html#ZH-CN_TOPIC_0000001965228938__zh-cn_topic_0000001951418089_section105501419161811)；也可以在配置自定义域名后，配置证书，详情请参见[配置自定义域名的HTTPS证书](https://support.huaweicloud.com/usermanual-obs/obs_06_3200.html#ZH-CN_TOPIC_0000002317212672__zh-cn_topic_0000001864658090_section563634714215)。
  OBS支持配置国际通用证书。
  
- **CDN加速域名：** 如果为桶配置了CDN加速域名，需要配置证书，详情请参见[HTTPS配置](https://support.huaweicloud.com/usermanual-cdn/zh-cn_topic_0064907771.html)。
 
#### 约束与限制
- OBS仅支持自定义域名托管HTTPS证书。
- 仅支持普通证书，不支持国密证书。
- 不支持仅配置CA证书，配置CA证书前请至少配置一张国际证书。
- 每个自定义域名最多支持配置一张国际证书和一张CA证书。
- 支持配置HTTPS证书时，每个桶最多支持配置100个自定义域名。
 
#### 费用说明
为域名配置证书实现使用HTTPS协议访问OBS，涉及证书购买费用，在华为云购买证书的费用，请参见[CCM计费项](https://support.huaweicloud.com/price-ccm/ccm_01_0185.html)。
#### 证书格式要求
证书包含两部分：**证书文件、证书私钥**。
- [证书文件格式]
  SCM证书的"证书文件"格式均需按以下要求。
  证书文件包含证书的公钥和签名等信息，证书扩展名为".pem"或".crt"。
  - 以"-----BEGIN CERTIFICATE-----"作为开头，"-----END CERTIFICATE-----"作为结尾。
  
  - 证书之间不能有空行，每行64字符，最后一行不超过64字符。
  
  
  示例如下：
  ```
  -----BEGIN CERTIFICATE-----
  MIIDIjCCAougAwIBAgIJALV96mEtVF4EMA0GCSqGSIb3DQEBBQUAMGoxCzAJBgNV
  BAYTAnh4MQswCQYDVQQIEwJ4eDELMAkGA1UEBxMCeHgxCzAJBgNVBAoTAnh4MQsw
  CQYDVQQLEwJ4eDELMAkGA1UEAxMCeHgxGjAYBgkqhkiG9w0BCQEWC3h4eEAxNjMu
  Y29tMB4XDTE3MTExMzAyMjYxM1oXDTIwMTExMjAyMjYxM1owajELMAkGA1UEBhMC
  eHgxCzAJBgNVBAgTAnh4MQswCQYDVQQHEwJ4eDELMAkGA1UEChMCeHgxCzAJBgNV
  BAsTAnh4MQswCQYDVQQDEwJ4eDEaMBgGCSqGSIb3DQEJARYLeHh4QDE2My5jb20w
  gZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMU832iM+d3FILgTWmpZBUoYcIWV
  cAAYE7FsZ9LNerOyjJpyi256oypdBvGs9JAUBN5WaFk81UQx29wAyNixX+bKa0DB
  WpUDqr84V1f9vdQc75v9WoujcnlKszzpV6qePPC7igJJpu4QOI362BrWzJCYQbg4
  Uzo1KYBhLFxl0TovAgMBAAGjgc8wgcwwHQYDVR0OBBYEFMbTvDyvE2KsRy9zPq/J
  WOjovG+WMIGcBgNVHSMEgZQwgZGAFMbTvDyvE2KsRy9zPq/JWOjovG+WoW6kbDBq
  MQswCQYDVQQGEwJ4eDELMAkGA1UECBMCeHgxCzAJBgNVBAcTAnh4MQswCQYDVQQK
  EwJ4eDELMAkGA1UECxMCeHgxCzAJBgNVBAMTAnh4MRowGAYJKoZIhvcNAQkBFgt4
  eHhAMTYzLmNvbYIJALV96mEtVF4EMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEF
  BQADgYEAASkC/1iwiALa2RU3YCxqZFEEsZZvQxikrDkDbFeoa6Tk49Fnb1f7FCW6
  PTtY3HPWl5ygsMsSy0Fi3xp3jmuIwzJhcQ3tcK5gC99HWp6Kw37RL8WoB8GWFU0Q
  4tHLOjBIxkZROPRhH+zMIrqUexv6fsb3NWKhnlfh1Mj5wQE4Ldo=
  -----END CERTIFICATE-----
  ```
- [证书私钥格式]
  SCM证书的"证书私钥"格式均需按以下要求。
  私钥扩展名为".key"，需注意必须是无密码的私钥，私钥内容格式为：
  - 符合PEM格式，如下示例：
    - 以"-----BEGIN RSA PRIVATE KEY-----"作为开头，"-----END RSA PRIVATE KEY-----" 作为结尾。
     
  
  - 私钥之间不能有空行，每行64字符，最后一行不超过64字符。
  
  
  示例如下：
  ```
  -----BEGIN RSA PRIVATE KEY-----
  MIICXQIBAAKBgQDFPN9ojPndxSC4E1pqWQVKGHCFlXAAGBOxbGfSzXqzsoyacotu
  eqMqXQbxrPSQFATeVmhZPNVEMdvcAMjYsV/mymtAwVqVA6q/OFdX/b3UHO+b/VqL
  o3J5SrM86Veqnjzwu4oCSabuEDiN+tga1syQmEG4OFM6NSmAYSxcZdE6LwIDAQAB
  AoGBAJvLzJCyIsCJcKHWL6onbSUtDtyFwPViD1QrVAtQYabF14g8CGUZG/9fgheu
  TXPtTDcvu7cZdUArvgYW3I9F9IBb2lmF3a44xfiAKdDhzr4DK/vQhvHPuuTeZA41
  r2zp8Cu+Bp40pSxmoAOK3B0/peZAka01Ju7c7ZChDWrxleHZAkEA/6dcaWHotfGS
  eW5YLbSms3f0m0GH38nRl7oxyCW6yMIDkFHURVMBKW1OhrcuGo8u0nTMi5IH9gRg
  5bH8XcujlQJBAMWBQgzCHyoSeryD3TFieXIFzgDBw6Ve5hyMjUtjvgdVKoxRPvpO
  kclc39QHP6Dm2wrXXHEej+9RILxBZCVQNbMCQQC42i+Ut0nHvPuXN/UkXzomDHde
  h1ySsOAO4H+8Y6OSI87l3HUrByCQ7stX1z3L0HofjHqV9Koy9emGTFLZEzSdAkB7
  Ei6cUKKmztkYe3rr+RcATEmwAw3tEJOHmrW5ErApVZKr2TzLMQZ7WZpIPzQRCYnY
  2ZZLDuZWFFG3vW+wKKktAkAaQ5GNzbwkRLpXF1FZFuNF7erxypzstbUmU/31b7tS
  i5LmxTGKL/xRYtZEHjya4Ikkkgt40q1MrUsgIYbFYMf2
  -----END RSA PRIVATE KEY-----
  ```
 #### 配置自定义域名的HTTPS证书
OBS支持通过[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)、API、SDK、obsutil方式配置自定义域名HTTPS证书，不支持通过OBS Browser+方式配置自定义域名HTTPS证书。
#### 使用OBS控制台
1. 在OBS[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)左侧导航栏选择"桶列表"。
2. 在桶列表中，单击待操作的桶，进入"对象"页面。
3. 在左侧导航栏选择"域名管理"，进入"域名管理"界面。
4. 在域名列表页，单击域名所在行区域右边"自定义域名HTTPS配置"旁边的"配置"按钮。 
   图1自定义域名HTTPS配置   
   ![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002332693581.png "点击放大")
   如果之前已配置HTTPS证书，可单击对应位置的"编辑"按钮，修改证书配置。
   
   
5. 进入配置HTTPS页面，根据要求配置以下参数。 
   ![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002298658558.png "点击放大")
   表1自定义域名的HTTPS配置 
   | 参数分类               | 参数名称 | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   |:---|:---|:---|
   | 状态                   | 状态                                | 选择是否启用HTTPS配置。 - 开关打开，表示启用HTTPS配置，实现自有域名HTTPS协议访问存储在OBS桶中的对象，提升域名访问安全性。  - 开关关闭，表示不启用HTTPS配置。                                                                                                                                                                           |
   | 证书配置                 | 证书标准 | 支持国际证书、国密（SM）证书、CA证书。 - **国际证书：**遵循国际标准的通用数字证书，由国际认可的证书颁发机构签发，主要用于验证持有者的身份，确保数据传输的安全性。  - **CA证书：**又称客户端CA公钥证书，用于验证客户端证书的签发者，由证书颁发机构签发，用于验证身份和建立信任链，确保通信安全。在HTTPS双向认证功能时，只有当客户端能够出具指定CA签发的证书时，HTTPS连接才能成功。                                                                  |
   | "证书标准"选择"**国际证书**" | 证书                                   | 当"证书标准"选择"国际证书"时，支持配置该参数。 选择需要使用的SCM证书。云证书与管理服务（Cloud Certificate \& Manager，简称CCM）提供的服务器数字证书。 如果您没有证书，可单击"购买证书"至CCM控制台购买证书，购买指导请参见[购买SSL证书](https://support.huaweicloud.com/usermanual-ccm/ccm_01_0074.html)。 **证书存在过期时间，请确保您选择的证书未过期。** **证书到期时，请及时更换证书，否则可能对业务造成影响。**                                                                                  |
   | "证书标准"选择"**CA证书**"  | 证书名称                                | 当"证书标准"选择"CA证书"时，支持配置该参数。 **不支持仅配置CA证书，请至少先配置一张国际证书。** 您的证书名称。命名规则如下： - 请输入中文、英文字符，下划线，中划线，英文逗号，英文句点。  - 长度为3\~63字符。   |
   | "证书标准"选择"**CA证书**"  | 证书文件                                | 当"证书标准"选择"CA证书"时，支持配置该参数。 单击"上传"，选择上传符合格式的证书文件，或用本地文本查看工具打开证书，将证书内容复制到文本框中。 格式如下： 每行64个字符，最后一行不超过64个字符，不能有空行。 ``` -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE----- ```                                                                                                                                                                                                                                   |
      
   
   
6. 单击"确定"。
 
#### 使用API
您可以使用API接口上传证书：
[设置桶的自定义域名](https://support.huaweicloud.com/api-obs/obs_04_0059.html)
[获取桶的自定义域名](https://support.huaweicloud.com/api-obs/obs_04_0060.html)
#### 使用SDK
| [Java](https://support.huaweicloud.com/sdk-java-devg-obs/obs_23_1726.html) | [Python](https://support.huaweicloud.com/sdk-python-devg-obs/obs_22_0851.html) | [C](https://support.huaweicloud.com/sdk-c-devg-obs/obs_20_3212.html) | Go暂不支持 | BrowserJS暂不支持 | .NET暂不支持 | Android暂不支持 | iOS暂不支持 | PHP暂不支持 | Node.js暂不支持 |
|---|---|---|---|---|---|---|---|---|---|
   
#### 使用命令行工具obsutil
**命令结构**
- Windows操作系统
  ```
  obsutil custom-domain obs://bucket -method=put -cname=xxx [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx]
  ```
  
- macOS/Linux操作系统
  ```
  ./obsutil custom-domain obs://bucket -method=put -cname=xxx [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx]
  ```
  
**运行示例**
以Windows操作系统为例，运行**obsutil custom-domain obs://test-bucket -method=put -cname=www.obs-example.com** ，指定给桶test-bucket绑定www.obs-example.com自定义域名。
```
obsutil custom-domain obs://test-bucket -method=put -cname=www.obs-example.com 
Start at 2024-09-30 07:59:28.8675681 +0000 UTC
Put customDomain configuration succeed for bucket [test-bucket], customDomain is [www.obs-example.com], requestId is [00000199765243C44018D688E9F5CFF5]
```
**参数说明**
| **参数**          | **约束**       | **描述**                                                                                                                                                  |
|:---|:---|:---|
| bucket            | 必选         | 桶名。                                                                                                                                                     |
| method          | 必选        | 指定方法，设置桶的自定义域名时该值为put。                                                                                                                                 |
| cname           | 必选        | 指定桶的自定义域名。 一个桶最多可以设置100个自定义域名，一个自定义域名只能被一个桶使用。 |
| certificateName | 附加参数，可选     | 指定证书名称，字符长度为3\~63位, 请输入英文字符，数字，下划线，中划线，英文句点。                                                                                                         |
| certificateId  | 附加参数，可选    | 指定证书ID。                                                                                                                                              |
| certificate    | 附加参数，可选  | 指定证书内容。可包含中间证书及根证书。若certificate_chain字段传入证书链，则该字段只取证书本身。如果证书内容出现换行，需要使用转义字符\\n或者\\r\\n替换。                                                             |
| certificateChain | 附加参数，可选    | 指定证书链，可通过certificate字段传入。如果证书链内容出现换行，需要使用转义字符\\n或者\\r\\n替换。                                                                                             |
| privateKey      | 附加参数，可选 | 指定证书私钥。不能上传带有口令保护的私钥。如果证书私钥内容出现换行，需要使用转义字符\\n或者\\r\\n替换。                                                                                               |
| config           | 附加参数，可选     | 运行当前命令时的自定义配置文件。可支持的配置参数请参考[配置参数说明](https://support.huaweicloud.com/utiltg-obs/obs_11_0035.html)。                              |
| e               | 附加参数，可选   | 指定终端节点。                                                                                                                                                |
| i               | 附加参数，可选    | 指定用户的AK。                                                                                                                                               |
| k                | 附加参数，可选    | 指定用户的SK。                                                                                                                                              |
| t               | 附加参数，可选   | 指定用户的securitytoken。                                                                                                                                    |
   
#### 使用HTTPS访问对象
为自定义域名配置HTTPS后，就可以通过浏览器验证是否可以使用HTTPS协议通过自定义域名访问对象。OBS支持通过[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)、SDK方式使用HTTPS协议通过自定义域名访问对象，不支持通过API、OBS Browser+、obsutil方式使用HTTPS协议通过自定义域名访问对象。
#### 使用OBS控制台
1. 在OBS[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)左侧导航栏选择"桶列表"。
2. 在桶列表中，单击待操作的桶，进入"对象"页面。
3. 选中待分享的文件，并单击右侧操作列的"分享"。
4. 在"分享文件"弹窗，设置相关参数。 
   图2分享文件   
   ![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002429979101.png "点击放大")
   表2分享文件参数说明 
   | 参数名称 | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   |:---|:---|
   | URL有效期 | 文件URL的有效时间，超过有效期链接将失效。 - URL有效期范围为1分钟\~18小时，有效期内任何用户都可以通过URL直接访问该对象。如果要分享有效期时长更长的链接，建议使用[OBS Browser+工具](https://support.huaweicloud.com/browsertg-obs/obs_03_1067.html)。  - 该弹窗打开时，链接信息已生效并开始计时，有效期默认为5分钟。修改URL有效期后会重新开始计时，同时链接信息会相应变化，您需要重新复制链接信息。                                                                                                             |
   | 用户协议 | 分享的链接使用的用户协议。默认为"https"。 如果您为自定义域名配置了HTTPS，建议您选择"https"。 - http：适用于对安全性要求不高的场景。  - https：适用于对安全性要求较高的场景。https通过SSL/TLS 协议对数据进行加密传输，保证数据的机密性和完整性；同时会基于证书验证服务器的身份，防止被攻击。                                                                                   |
   | 自定义域名 | 选择分享链接是否使用自定义域名。此处选择为桶绑定的自定义域名，即分享的链接信息为使用自定义域名拼接成的链接。 - **由于内容分发网络（CDN）是实现公网的访问加速（任何用户均可访问CDN），因此如果自定义域名开启了CDN加速后，可能会造成分享链接永不超期，即任何用户在任何时间均可以访问对象。**  - **如果自定义域名开启了CDN加速且在[配置CDN节点缓存规则](https://support.huaweicloud.com/usermanual-cdn/cdn_01_0116.html#section2)时，配置了忽略URL参数（CDN缓存时忽略请求URL中"?"之后的参数），将会导致分享链接无效。** 说明： 分享链接信息中"?"后面的为鉴权信息，因此鉴权信息被忽略后，分享链接将会失效。    |
      
   
   
5. 分享对象。 
   - 单击"打开URL"，将在新页面打开对象进行预览。
   
   - 单击"复制链接"，您可以将该链接分享给其他用户，用户可以在浏览器中通过此链接直接访问该对象。
   
   
   
   
 
#### 使用SDK
1. 获取预签名URL。 
   以下为常用语言的示例代码：
   - Java
     ```
     import com.obs.services.ObsClient;
     import com.obs.services.ObsConfiguration;
     import com.obs.services.model.HttpMethodEnum;
     import com.obs.services.model.TemporarySignatureRequest;
     import com.obs.services.model.TemporarySignatureResponse;
     public class GetObject {
         public static void main(String[] args) {
             // 您可以通过环境变量获取访问密钥AK/SK，也可以使用其他外部引入方式传入。如果使用硬编码可能会存在泄露风险。
             // 您可以登录访问管理控制台获取访问密钥AK/SK
             String ak = System.getenv("ACCESS_KEY_ID");
             String sk = System.getenv("SECRET_ACCESS_KEY_ID");
             // 【可选】如果使用临时AK/SK和SecurityToken访问OBS，同样建议您尽量避免使用硬编码，以降低信息泄露风险。
             // 您可以通过环境变量获取访问密钥AK/SK/SecurityToken，也可以使用其他外部引入方式传入。使用临时访问密钥调用接口可将下面一行的注释取消。
             // String securityToken = System.getenv("SECURITY_TOKEN");
             // endpoint填写桶的自定义域名,如果配置了自定义域名证书，可以修改为https。
             String endpoint = "http://example.com";
             // 您可以通过环境变量获取endPoint，也可以使用其他外部引入方式传入。
             //String endPoint = System.getenv("ENDPOINT");
             ObsConfiguration obsConfiguration = new ObsConfiguration();
             obsConfiguration.setCname(true);
             obsConfiguration.setEndPoint(endpoint);
             try {
                 // 创建ObsClient实例
                 // 使用永久AK/SK初始化客户端
                 ObsClient obsClient = new ObsClient(ak, sk, obsConfiguration);
                 // 使用临时AK/SK和SecurityToken初始化客户端
                 // ObsClient obsClient = new ObsClient(ak, sk, securityToken, obsConfiguration);
                 // URL有效期，3600秒
                 long expires = 3600L;
                 TemporarySignatureRequest request = new TemporarySignatureRequest(HttpMethodEnum.GET, expireSeconds);
                 request.bucketName("bucketname");
                 request.objectKey("objectkey");
                 TemporarySignatureResponse response = obsClient.createTemporarySignature(request);
                 System.out.println("Getting object using temporary signature url:");
                 System.out.println("SignedUrl:" + response.getSignedUrl());
             } catch (Exception e) {
                 System.out.println("create temporary signature failed");
                 e.printStackTrace();
             }
         }
     }
     ```
     
   
   - Python
     ```
     from obs import ObsClient
     import os
     import traceback
     # 推荐通过环境变量获取AKSK，这里也可以使用其他外部引入方式传入，如果使用硬编码可能会存在泄露风险
     # 您可以登录访问管理控制台获取访问密钥AK/SK，获取方式请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html
     ak = os.getenv("ACCESS_KEY_ID")
     sk = os.getenv("SECRET_ACCESS_KEY_ID")
     # 【可选】如果使用临时AKSK和SecurityToken访问OBS，则同样推荐通过环境变量获取
     # security_token = os.getenv("SecurityToken")
     # server填写桶的自定义域名,如果配置了自定义域名证书，可以修改为https。
     server = "http://example.domain"
     # 创建obsClient实例
     obsClient = ObsClient(access_key_id=ak, secret_access_key=sk, server=server, is_cname=True)
     # 如果使用临时AKSK和SecurityToken访问OBS，需要在创建实例时通过security_token参数指定securityToken值
     #obsClient = ObsClient(access_key_id=ak, secret_access_key=sk, security_token=security_token, server=server, is_cname=True)
     try:
         # 生成下载对象的带授权信息的URL
         res = obsClient.createSignedUrl(method='GET', bucketName='bucketname', objectKey='objectkey', expires=3600)
         print('signedUrl:', res.signedUrl)
     except:
         print(traceback.format_exc())
     ```
     
   
   
   
   
2. 使用浏览器访问预签名URL。
 
 #### 强制客户端使用HTTPS协议访问OBS
在某些对数据传输安全有严格要求的场景，可以通过配置桶策略来拒绝所有客户端的HTTP请求，防止数据在传输过程中被窃取或篡改。
1. 在OBS[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)左侧导航栏选择"桶列表"。
2. 在桶列表中，单击待操作的桶，进入"对象"页面。
3. 在左侧导航栏，单击"权限控制 \> 桶策略"。
4. 单击"创建"。
5. 配置桶策略。 
   图3配置桶策略   
   ![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002666223633.png "点击放大")
   表3自定义桶策略参数配置说明 
   | 参数                               | 示例                                                                                                                                                                                                                                                                                                 | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   |:---|:---|:---|
   | 策略配置方式                         | **可视化视图**                                                                                                                                                                                                                                                                                        | 支持可视化视图和JSON视图。此处以可视化视图为例，JSON视图的说明请参见[自定义创建桶策略（JSON视图）](https://support.huaweicloud.com/usermanual-obs/obs_03_0141.html#ZH-CN_TOPIC_0000001858344854)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 策略名称                              | **deny_http**                                                                                                                                                                                                                                                                                    | 输入自定义桶策略的名称。 **策略名称不允许为空。**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 效力        | **拒绝**                                                                                                                                                                                                                                                                                         | - 允许：指定本条桶策略描述的权限为接受请求。  - 拒绝：指定本条桶策略描述的权限为拒绝请求。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   | 被授权用户    | **所有账号**                                                                                                                                                                                                                                                                                         | - 所有账号：表示桶策略授权给互联网上的所有人。  - 当前账号：可以选择当前账号下的一个或多个IAM子用户。 注意： 当被授权用户选择"当前账号"时，需要您的账号具有"iam:users:listUsers"权限才能列举出当前账号下的IAM用户来供您选择。授权操作需要先[创建自定义策略](https://support.huaweicloud.com/usermanual-iam/iam_01_0605.html)，然后[给IAM用户授权](https://support.huaweicloud.com/usermanual-iam/iam_01_0652.html)。   - 其他账号：可以设置一个或多个其他账号。 - 账号ID和IAM子用户ID可在"我的凭证"页面获取。  - 可授权给多个账号，单击下方的"添加其他账号"即可添加。  - IAM用户ID或名称填写\*，表示授权给账号下的所有用户。    - 委托账号：可以设置一个或多个委托账号。 可授权给多个委托账号，单击下方的"添加委托账号"即可添加。                                                                  |
   | 授权资源    | **整个桶（包括桶内对象）**                                                                                                                                                                                                                                                                                 | - 整个桶（包括桶内对象）：表示整个桶及桶内所有对象，可以在动作中配置桶和对象相关动作。  - 当前桶：表示当前桶，可以在动作中配置桶相关动作。  - 指定对象：表示桶内指定对象，可以在动作中配置对象相关动作。 - 指定对象支持输入多个资源路径。  - 资源路径输入格式：文件夹/对象名，例如"testdir/a.txt"。如果您想要指定文件夹及文件夹下所有对象，可以输入"testdir/\*"。  - 您可以指定资源路径为具体对象、对象集或目录，\*表示桶内所有对象。 - 如果指定某个对象：请输入对象名称。  - 如果指定某个对象集：请输入"对象名称前缀\*"、"\*对象名后缀"或"\*"。例如，"testdir/\*"为指定testdir文件夹下的对象，"testprefix\*"为指定前缀为testprefix的对象。       |
   | 授权操作     | **自定义配置** **动作选择"\*"**                                                                                                                                                                                                 | 配置该桶策略授权的操作，支持使用模板配置和自定义配置。 - 模板配置：OBS预置了多种常用典型场景的桶策略模板，帮助您快速完成桶策略配置。详情请参见[使用模板创建桶策略](https://support.huaweicloud.com/usermanual-obs/obs_03_0142.html#ZH-CN_TOPIC_0000001858186102)。  - 自定义配置：用户自定义选择授权操作。选择"自定义配置"后，还需要选择动作。 选择动作：详细的动作信息请参见[桶策略参数说明](https://support.huaweicloud.com/perms-cfg-obs/obs_40_0041.html)。 说明： - 如果"授权资源"仅选择"整个桶（包括桶内对象）"，可选择配置"通用动作"、"桶动作"和"对象动作"。  - 如果"授权资源"仅选择"当前桶"，可选择配置"通用动作"和"桶动作"。  - 如果"授权资源"仅选择"指定对象"，可选择配置"通用动作"和"对象动作"。  - 如果"授权资源"同时选择"当前桶"和"指定对象"，可选择配置"通用动作"、"桶动作"和"对象动作"。                                                                                                                                                                                                                                                                                         |
   | 授权条件（可选） | **键：SecureTransport** **限定词：default** **条件运算符：Bool** **值：false** | 可选参数。用于指定桶策略生效的条件。 - 键：请参见[桶策略参数说明](https://support.huaweicloud.com/perms-cfg-obs/obs_40_0041.html)。  - 标签键：请参见[桶策略参数说明](https://support.huaweicloud.com/perms-cfg-obs/obs_40_0041.html)。  - 限定词：请参见[桶策略参数说明](https://support.huaweicloud.com/perms-cfg-obs/obs_40_0041.html)。  - 条件运算符：请参见[桶策略参数说明](https://support.huaweicloud.com/perms-cfg-obs/obs_40_0041.html)。  - 值：输入的值与键相关。                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
      
   
   
6. 单击界面右下角的"创建"，完成桶策略创建。
也可以使用JSON格式配置桶策略拒绝所有客户端的HTTP请求：
```
{
    "Statement": [
        {
            "Sid": "deny_http",
            "Effect": "Deny",
            "Principal": {
                "ID": [
                    "*"
                ]
            },
            "Action": [
                "*"
            ],
            "Resource": [
                "dfhjhkmk",
                "dfhjhkmk/*"
            ],
            "Condition": {
                "Bool": {
                    "SecureTransport": [
                        "false"
                    ]
                }
            }
        }
    ]
}
```
#### 证书生命周期管理
#### 查看证书到期时间
- 如果您的证书是在华为云云证书与管理服务（CCM）托管，请参考[查看证书详情](https://support.huaweicloud.com/usermanual-ccm/ccm_01_0050.html)查看证书到期时间。
- 如果您的证书在其他服务商处托管，请在其他服务商处查看证书到期时间。
 
#### 更换域名配置的证书
如果您需要更换域名已配置的证书，请参考如下步骤：
1. 在OBS[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)左侧导航栏选择"桶列表"。
2. 在桶列表中，单击待操作的桶，进入"对象"页面。
3. 在左侧导航栏选择"域名管理"，进入"域名管理"界面。
4. 在域名列表页，单击域名所在行区域右边"自定义域名HTTPS配置"旁边的"编辑"按钮。
5. 进入配置HTTPS页面，根据要求配置以下参数。 
   ![](https://support.huaweicloud.com/usermanual-obs/figure/zh-cn_image_0000002298658558.png "点击放大")
   表4自定义域名的HTTPS配置 
   | 参数分类               | 参数名称 | 参数说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   |:---|:---|:---|
   | 状态                   | 状态                                | 选择是否启用HTTPS配置。 - 开关打开，表示启用HTTPS配置，实现自有域名HTTPS协议访问存储在OBS桶中的对象，提升域名访问安全性。  - 开关关闭，表示不启用HTTPS配置。                                                                                                                                                                                                                                     |
   | 证书配置                 | 证书标准 | 支持国际证书、国密（SM）证书、CA证书。 - **国际证书：**遵循国际标准的通用数字证书，由国际认可的证书颁发机构签发，主要用于验证持有者的身份，确保数据传输的安全性。  - **CA证书：**又称客户端CA公钥证书，用于验证客户端证书的签发者，由证书颁发机构签发，用于验证身份和建立信任链，确保通信安全。在HTTPS双向认证功能时，只有当客户端能够出具指定CA签发的证书时，HTTPS连接才能成功。                                                                                                                            |
   | "证书标准"选择"**国际证书**" | 证书                                   | 当"证书标准"选择"国际证书"时，支持配置该参数。 选择需要使用的SCM证书。云证书与管理服务（Cloud Certificate \& Manager，简称CCM）提供的服务器数字证书。 如果您没有证书，可单击"购买证书"至CCM控制台购买证书，购买指导请参见[购买SSL证书](https://support.huaweicloud.com/usermanual-ccm/ccm_01_0074.html)。 **证书存在过期时间，请确保您选择的证书未过期。** **证书到期时，请及时更换证书，否则可能对业务造成影响。**                                                                                                                                                                         |
   | "证书标准"选择"**CA证书**"  | 证书名称                                | 当"证书标准"选择"CA证书"时，支持配置该参数。 **不支持仅配置CA证书，请至少先配置一张国际证书。** 您的证书名称。命名规则如下： - 请输入中文、英文字符，下划线，中划线，英文逗号，英文句点。  - 长度为3\~63字符。   |
   | "证书标准"选择"**CA证书**"  | 证书文件                                | 当"证书标准"选择"CA证书"时，支持配置该参数。 单击"上传"，选择上传符合格式的证书文件，或用本地文本查看工具打开证书，将证书内容复制到文本框中。 格式如下： 每行64个字符，最后一行不超过64个字符，不能有空行。 ``` -----BEGIN CERTIFICATE----- Base64–encoded certificate -----END CERTIFICATE----- ```                                                                                                                                                                                                                                                                                                                                                       |
      
   
   
6. （可选）单击"添加证书"可同时配置多张证书。 
   **每个自定义域名最多支持配置一张国际证书和一张CA证书。**
   
   
7. 单击"确定"。
 
#### 证书续期
SSL证书有固定有效期，证书过期后服务器将无法进行HTTPS加密通信。为避免证书过期影响您的业务，建议您在证书过期前30天续费SSL证书。
- 如果您的证书是在华为云云证书与管理服务（CCM）托管，请参考[自动续费](https://support.huaweicloud.com/usermanual-ccm/ccm_01_0309.html)为证书续期。
- 如果您的证书在其他服务商处托管，请在其他服务商处为证书续期。
 
#### 关闭HTTPS访问
OBS支持通过[管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)、API、SDK、obsutil方式关闭桶的自定义域名HTTPS配置，不支持通过OBS Browser+方式关闭桶的自定义域名HTTPS配置。
#### 使用OBS控制台
1. 在左侧导航栏选择"域名管理"，进入"域名管理"界面。
2. 在域名列表页，单击域名所在行区域右边"自定义域名HTTPS配置"旁边的"编辑"按钮。
3. 关闭状态开关，然后单击"确定"。
 
#### 使用API
您可以使用API接口上传证书：
[设置桶的自定义域名](https://support.huaweicloud.com/api-obs/obs_04_0059.html)
[获取桶的自定义域名](https://support.huaweicloud.com/api-obs/obs_04_0060.html)
#### 使用SDK
| [Java](https://support.huaweicloud.com/sdk-java-devg-obs/obs_23_1726.html) | [Python](https://support.huaweicloud.com/sdk-python-devg-obs/obs_22_0851.html) | [C](https://support.huaweicloud.com/sdk-c-devg-obs/obs_20_3212.html) | Go暂不支持 | BrowserJS暂不支持 | .NET暂不支持 | Android暂不支持 | iOS暂不支持 | PHP暂不支持 | Node.js暂不支持 |
|---|---|---|---|---|---|---|---|---|---|
   
#### 使用命令行工具obsutil
**命令结构**
- Windows操作系统
  ```
  obsutil custom-domain obs://bucket -method=put -cname=xxx [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx]
  ```
  
- macOS/Linux操作系统
  ```
  ./obsutil custom-domain obs://bucket -method=put -cname=xxx [-config=xxx] [-e=xxx] [-i=xxx] [-k=xxx] [-t=xxx]
  ```
  
**运行示例**
以Windows操作系统为例，运行**obsutil custom-domain obs://test-bucket -method=put -cname=www.obs-example.com** ，指定给桶test-bucket绑定www.obs-example.com自定义域名。
```
obsutil custom-domain obs://test-bucket -method=put -cname=www.obs-example.com 
Start at 2024-09-30 07:59:28.8675681 +0000 UTC
Put customDomain configuration succeed for bucket [test-bucket], customDomain is [www.obs-example.com], requestId is [00000199765243C44018D688E9F5CFF5]
```
**参数说明**
| **参数**          | **约束**       | **描述**                                                                                                                                                                               |
|:---|:---|:---|
| bucket            | 必选         | 桶名。                                                                                                                                                                                  |
| method          | 必选        | 指定方法，设置桶的自定义域名时该值为put。                                                                                                                                                              |
| cname           | 必选        | 指定桶的自定义域名。 一个桶最多可以设置100个自定义域名，一个自定义域名只能被一个桶使用。 |
| certificateName | 附加参数，可选     | 指定证书名称，字符长度为3\~63位, 请输入英文字符，数字，下划线，中划线，英文句点。                                                                                                                                      |
| certificateId  | 附加参数，可选    | 指定证书ID。                                                                                                                                                                           |
| certificate    | 附加参数，可选  | 指定证书内容。可包含中间证书及根证书。若certificate_chain字段传入证书链，则该字段只取证书本身。如果证书内容出现换行，需要使用转义字符\\n或者\\r\\n替换。                                                                                          |
| certificateChain | 附加参数，可选    | 指定证书链，可通过certificate字段传入。如果证书链内容出现换行，需要使用转义字符\\n或者\\r\\n替换。                                                                                                                          |
| privateKey      | 附加参数，可选 | 指定证书私钥。不能上传带有口令保护的私钥。如果证书私钥内容出现换行，需要使用转义字符\\n或者\\r\\n替换。                                                                                                                            |
| config           | 附加参数，可选     | 运行当前命令时的自定义配置文件。可支持的配置参数请参考[配置参数说明](https://support.huaweicloud.com/utiltg-obs/obs_11_0035.html)。                                                           |
| e               | 附加参数，可选   | 指定终端节点。                                                                                                                                                                             |
| i               | 附加参数，可选    | 指定用户的AK。                                                                                                                                                                            |
| k                | 附加参数，可选    | 指定用户的SK。                                                                                                                                                                           |
| t               | 附加参数，可选   | 指定用户的securitytoken。                                                                                                                                                                 |
   
#### 最佳实践
为避免在证书配置出现问题且无法快速修复或证书失效导致无法进行HTTPS加密通信，建议您按照以下方式做好风险防范：
- **备用证书机制：**提前准备好备用证书以便在主证书失效时，可以立即使用备用证书替换主证书。
- **HTTP访问回退策略：** 在证书配置出现问题无法快速快速修复时，可以临时允许HTTP访问。
  如果您已经按照[强制客户端使用HTTPS协议访问OBS]配置桶策略强制使用HTTPS协议访问OBS，则当证书配置出现问题无法立即修复时，请先删除该桶策略，待证书问题修复后再重新配置桶策略。
  
 
#### 相关文档
#### 配置SSL证书后，为什么浏览器访问仍然提示"不安全"或"证书错误"？
当配置完证书后仍出现安全警告，可按照以下方法排查：
- **清除浏览器缓存：**浏览器可能缓存的是旧的证书状态，请清除缓存后重新使用浏览器访问。
- **配置后等待配置生效：**配置证书后，需要一定的时间生效，请您等待几分钟后重新使用浏览器访问。
- **检查配置：**查看是否配置证书后又关闭了证书配置。如果是，请打开并重新配置证书。
 
#### 通过HTTPS协议访问OBS出现证书异常应该如何处理？
请根据不同的证书异常类型查看处理方法：
- **浏览器报错"NET::ERR_SSL_PROTOCOL_ERROR"：** 可能是未配置证书。
  - 如果域名未开启加速或未配置加速域名，请参照[配置自定义域名的HTTPS证书]配置证书。
  
  - 如果域名已开启加速或已配置加速域名，请参照[HTTPS配置](https://support.huaweicloud.com/usermanual-cdn/zh-cn_topic_0064907771.html)配置证书。
   
- **浏览器报错"NET::ERR_CERT_DATE_INVALID"：** 表示证书过期，请参照[更换域名配置的证书]更换证书。
- **浏览器报错"NET::ERR_CERT_COMMON_NAME_INVALID"：**表示证书不匹配，访问的域名不在所配置的证书的绑定域名范围内（如访问的域名是test.example.com，但证书绑定的域名是test01.example.com），请为该访问域名配置正确的证书。
 
#### 在配置证书时，为什么证书下拉列表找不到目标证书？
可能的原因如下：
- 证书与域名不匹配：系统只会在证书下拉列表中列举出绑定了当前域名的证书，如为test.example.com域名配置证书时，无法选择到绑定了test01.example.com域名的证书。
- 证书不在当前账号下：需要在[CCM控制台](https://console.huaweicloud.com/ccm/?locale=zh-cn#/ccm/scs/certList/uploadList)上传证书。
- 泛域名证书层级不匹配：泛域名证书仅支持同级别域名，如\*.example.com泛域名证书可匹配www.example.com、obs.example.com域名，但无法匹配test.obs.example.com域名。
 
#### CDN加速域名证书配置相关的常见问题
在内容分发网络（CDN）为加速域名配置HTTPS时，相关常见问题如下：
- [配置HTTPS安全加速后，为什么访问加速域名不成功？](https://support.huaweicloud.com/cdn_faq/cdn_01_0022.html)
- [HTTPS证书配置提交时提示"证书链不齐全"，如何进行证书链补齐？](https://support.huaweicloud.com/cdn_faq/cdn_faq_0009.html)
- [HTTPS证书配置提交时提示"证书格式不对"，如何进行PEM证书格式转换？](https://support.huaweicloud.com/cdn_faq/cdn_faq_0154.html)
- [HTTPS配置是否支持添加自签名证书？](https://support.huaweicloud.com/cdn_faq/cdn_faq_0157.html)
- [开启HTTPS强制跳转后，为什么在浏览器内访问正常，但是通过api请求HTTP会导致post请求丢失参数？](https://support.huaweicloud.com/cdn_faq/cdn_faq_0158.html)
- [配置HTTPS后还可以使用HTTP访问吗？](https://support.huaweicloud.com/cdn_faq/cdn_faq_0216.html)
 
