Python-SDK
概述
本文档主要介绍证书服务 Python SDK的安装和使用。
在阅读本文档前,您需要先开通证书服务,并了解证书服务的基本知识。若您还不了解证书服务,可以参考IAM产品描述的证书管理部分
安装SDK工具包
环境准备
- 运行环境
Python SDK工具包支持在Python 2.7 和Python 3 的环境运行。 -
安装pycrypto依赖
安装SDK之前,需要先执行命令
pip install pycrypto
安装pycrypto依赖。如果安装失败,请执行
pip install pycryptodome
下载和安装
方式一:通过pip安装
您可以通过pip安装的方式将百度智能云Python SDK安装到您的环境中。 联网状态下,在命令行中执行如下命令:
pip install bce-python-sdk
即可将Python SDK安装到本地。
方式二:将源码包下载到本地后进行安装
- 在开发者资源中心下载Python SDK压缩工具包。
-
命令行移动到压缩包所在路径,执行如下命令(version替换为包名称中的版本号):
pip install bce-python-sdk-version.zip
即可将Python SDK安装到本地。
方式三:使用setup.py install文件进行安装
您也可以解压压缩包后执行如下命令(version替换为包名称中的版本号)
cd bce-python-sdk-version
python setup.py install
SDK目录结构
baidubce
├── auth //公共权限目录
├── services //服务公共目录
│ └── cert //证书服务目录
│ ├── cert_client.py //证书管理服务客户端入口类
│ └── cert_model.py //证书管理服务model,如Request或Response
└── http //Http请求模块
卸载SDK
卸载 SDK 时,执行命令pip uninstall bce-python-sdk
即可完成卸载。
初始化
确认Endpoint
用户若要自定义域名,可以通过传入ENDPOINT参数来指定。区域的概念请参考区域选择说明。
在开始SDK使用之前,需要您先确定好要在哪个区域进行操作,从而在配置CertClient时将区域对应的Endpoint做为参数填入。
证书服务目前不区分区域,ENDPOINT统一为:https://certificate.baidubce.com
获取密钥
要使用百度智能云产品,您需要拥有一个百度智能云账号和一个有效的 AK(Access Key ID)、SK(Secret Access Key)用来进行签名认证。
可以通过如下步骤获得并了解您的AK/SK信息:
2.创建AK/SK
获取到密钥后,需要在配置Client时做为参数填入。SDK集成了鉴权认证机制,您不需要关心鉴权背后的运算方法,只需要将AK/SK按要求填入对应的位置,SDK将自动为您完成鉴权相关的工作。
新建CertClient
CertClient是证书服务的客户端,为开发者与证书服务进行交互提供了一系列的方法。
通过AK/SK方式访问证书服务
1.在新建CertClient之前,需要先创建配置文件对CertClient进行配置,以下将此配置文件命名为cert_sample_conf.py
,具体配置信息如下所示:
# !/usr/bin/env python
# coding=utf-8
# 导入Python标准日志模块
import logging
# 从Python SDK导入证书服务配置管理模块以及安全认证模块
from baidubce.bce_client_configuration import BceClientConfiguration
from baidubce.auth.bce_credentials import BceCredentials
# 设置CertClient的Host,Access Key ID和Secret Access Key
cert_host = "certificate.baidubce.com"
access_key_id = "AK"
secret_access_key = "SK"
# 设置日志文件的句柄和日志级别
logger = logging.getLogger('baidubce.services.cert.certclient')
fh = logging.FileHandler("sample.log")
fh.setLevel(logging.DEBUG)
# 设置日志文件输出的顺序、结构和内容
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
logger.setLevel(logging.DEBUG)
logger.addHandler(fh)
# 创建BceClientConfiguration
config = BceClientConfiguration(credentials=BceCredentials(access_key_id, secret_access_key), endpoint = cert_host)
注意: 针对日志文件,Logging有如下级别:DEBUG,INFO,WARNING,ERROR,CRITICAL。
在上面代码中,access_key_id对应控制台中的“Access Key ID”,secret_access_key对应控制台中的“Access Key Secret”,获取方式请参考管理ACCESSKEY。
2.在完成上述配置之后,参考如下代码新建一个CertClient。
# 导入CertClient配置文件
import cert_sample_conf
# 导入证书服务相关模块
from baidubce.services.cert.cert_client import CertClient
# 新建CertClient
cert_client = CertClient(cert_sample_conf.config)
配置HTTPS协议访问证书服务
您可以通过如下两种方式在CERT Python SDK中使用HTTPS访问证书服务:
- 在endpoint中指定HTTPS:
config = bce_client_configuration.BceClientConfiguration(
credentials = bce_credentials.BceCredentials(
access_key_id = 'your-ak',
secret_access_key = 'your-sk'
),
endpoint = 'https://certificate.baidubce.com'
)
- 通过在
protocol
中指定https
来设置HTTPS协议:
config = bce_client_configuration.BceClientConfiguration(
credentials = bce_credentials.BceCredentials(
access_key_id = 'your-ak',
secret_access_key = 'your-sk'
),
endpoint = 'certificate.baidubce.com',
protocol = baidubce.protocol.HTTPS
)
client = cert_client.CertClient(config)
注意: 如果您在指定了endpoint的scheme的同时指定了protocol参数,则以endpoint为准。
config = bce_client_configuration.BceClientConfiguration(
credentials = bce_credentials.BceCredentials(
access_key_id = 'your-ak',
secret_access_key = 'your-sk'
),
endpoint = 'https://certificate.baidubce.com',
protocol = baidubce.protocol.HTTPS
)
client = cert_client.CertClient(config)
配置CertClient
您可以为CertClient设置一些网络参数:
# 设置请求超时时间
cert_sample_conf.config.connection_timeout_in_mills = TIMEOUT
# 设置接收缓冲区大小
cert_sample_conf.config.recv_buf_size(BUF_SIZE)
# 设置发送缓冲区大小
cert_sample_conf.config.send_buf_size(BUF_SIZE)
# 设置连接重试策略
# 三次指数退避重试
cert_sample_conf.config.retry_policy = BackOffRetryPolicy()
# 不重试
cert_sample_conf.config.retry_policy = NoRetryPolicy()
参数说明
通过cert_client_configuration能指定的所有参数如下表所示:
参数 | 说明 |
---|---|
port | 证书服务端口号 |
send_buf_size | 发送缓冲区大小 |
recv_buf_size | 接收缓冲区大小 |
connection_timeout_in_mills | 请求超时时间(单位:毫秒) |
retry_policy | 连接重试策略,初始化Client时默认为三次指数退避 |
证书管理
证书管理功能主要用于管理用户的SSL证书,当前支持上传证书。 请求中的参数解释见证书名词解释
上传证书
如下代码将上传一个SSL证书:
# Import CertCreateRequest
from baidubce.services.cert.cert_model import CertCreateRequest
# Prepare your certificate data
cert_name = 'certificate name'
cert_type = 1
cert_server_data = 'Fill certificate here'
cert_private_data = 'Fill private key here'
cert_link_data = "Fill certificate chain here"
cert_create_request = CertCreateRequest(cert_name, cert_server_data, cert_private_data, cert_link_data, cert_type)
# Create a certificate
response = cert_client.create_cert(cert_create_request)