本文介绍了使用SSL证书服务Java SDK为域名创建证书请求文件(调用CreateCasExtractKey接口)、导入已签发的证书到SSL证书服务(调用SaveCasExtractCertificate接口)的示例代码。

使用限制

您的开发环境必须是Java SE Development Kit(JDK)7及以上版本,才可以正常使用本文介绍的示例代码。

开发依赖

使用SSL证书SDK前,您必须引入以下依赖:
  • 阿里云核心SDK。以Java语言为例,方法如下:
    <dependency>
        <groupId>com.aliyun</groupId>
        <artifactId>aliyun-java-sdk-core</artifactId>
        <version>5.0.0</version>
    </dependency>
  • JSON解析器。以引入FastJSON为例,方法如下:
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.68</version>
    </dependency>
您可以使用以下示例代码,完成公共方法的配置。使用以下代码前,请将<yourAccessKey><yourAccessKeySecret>替换成您自己的AccessKey ID和AccessKey Secret。
说明 您可以在阿里云控制台的AccessKey管理页面,查询您的AccessKey信息。
private String endPoint = "cas.aliyuncs.com";
private String productName = "cas";
private String regionId = "cn-hangzhou";
private String accessKeyId = "<yourAccessKey>";
private String accessKeySecret = "<yourAccessKeySecret>";
private CommonResponse getCommonResponse(CommonRequest request) throws Exception {
    DefaultProfile.addEndpoint(this.regionId, this.productName, this.endPoint);
    DefaultProfile profile = DefaultProfile.getProfile(this.regionId, this.accessKeyId, this.accessKeySecret);
    IAcsClient client = new DefaultAcsClient(profile);
    return client.getCommonResponse(request);
}

SDK使用流程

SSL证书SDK目前支持CreateCasExtractKey和SaveCasExtractCertificate两个接口。您可以参照以下流程使用SDK:
  1. 调用CreateCasExtractKey,为域名创建一个证书请求文件(CSR)。
  2. 获取CSR后,使用CSR提交证书申请;证书申请信息经CA审核通过后,您将会获得对应的证书文件。
    说明 该操作无法通过SDK完成。您可以通过SSL证书控制台提交证书申请,具体操作,请参见步骤一:填写证书申请信息
  3. 调用SaveCasExtractCertificate,将上一步签发的证书导入到SSL证书服务进行统一管理。

CreateCasExtractKey

调用CreateCasExtractKey为域名创建一个证书请求文件(CSR)。

请求参数
名称 类型 是否必选 示例值 描述
Action String CreateCasExtractKey 要执行的操作。取值:CreateCasExtractKey
Algorithm String RSA_2048 密钥算法的类型。取值:RSA_2048
MainDomain String example.com 证书要绑定的域名。
Sans String test1.example.com,test2.example.com 证书要绑定的子域名。支持填写多个子域名,多个子域名之间使用英文逗号(,)分隔。
CountryCode String CN 申请人所在国家代码。使用国际域名缩写格式表示,例如,CN表示中国。
说明 目前仅适用于申请人在中国的场景。如果申请人所在地域是中国以外,请提交工单
Province String Zhejiang 申请人所在省份。使用汉语拼音表示,例如,Zhejiang表示浙江省。
Locality String Hangzhou 申请人所在城市。使用汉语拼音表示,例如,Hangzhou表示杭州市。
CorpName String xx有限公司 申请人所在公司名称。
Department String IT 申请人所在公司部门。
Email String tom@example.com 申请人的邮箱。
返回数据
名称 类型 示例值 描述
Csr String -----CSR内容----- 生成的CSR内容。
示例代码
说明 使用以下代码前,请将请求参数的示例值替换成您自己的参数值。
public void testCasExtractCreateCsr() throws Exception {
    CommonRequest request = new CommonRequest();
    request.setSysAccept(FormatType.JSON);
    request.setSysProduct("cas");
    request.setSysAction("CreateCasExtractKey");
    request.setSysVersion("2020-12-03");
    request.setSysConnectTimeout(new Integer(3000));
    request.setSysReadTimeout(new Integer(5000));
    request.setSysMethod(MethodType.POST);
    request.putQueryParameter("Algorithm", "RSA_2048");
    request.putQueryParameter("MainDomain", "example.com");
    request.putQueryParameter("Sans", "test1.example.com,test2.example.com");
    request.putQueryParameter("CountryCode", "CN");
    request.putQueryParameter("Province", "Zhejiang");
    request.putQueryParameter("Locality", "Hangzhou");
    request.putQueryParameter("CorpName", "xx有限公司");
    request.putQueryParameter("Department", "IT");
    request.putQueryParameter("Email", "tom@example.com");
    CommonResponse response = this.getCommonResponse(request);
    String body = response.getData();
    JSONObject jsonObject = JSON.parseObject(body);
    String csr = jsonObject.getString("Csr");
    System.out.println(csr);
}

SaveCasExtractCertificate

调用SaveCasExtractCertificate导入已签发的证书到SSL证书服务。

请求参数
名称 类型 是否必选 示例值 描述
Ation String SaveCasExtractCertificate 要执行的操作。取值:SaveCasExtractCertificate
Certificate String —–BEGIN CERTIFICATE—–……—–END CERTIFICATE—– 要导入的证书内容。要求如下:
  • 证书内容必须与调用CreateCasExtractKey生成的CSR匹配,否则无法成功导入。
  • 证书内容使用PEM编码,格式为:
    —–BEGIN CERTIFICATE—–
    ……
    —–END CERTIFICATE—–
返回数据
名称 类型 示例值 描述
CertName String myCert 证书名称。
CertId String 1 证书ID。
示例代码
说明 使用以下代码前,请将请求参数的示例值替换成您自己的参数值。
public void testCasExtractSaveCertificate() throws Exception {
    CommonRequest request = new CommonRequest();
    request.setSysAccept(FormatType.JSON);
    request.setSysProduct("cas");
    request.setSysAction("SaveCasExtractCertificate");
    request.setSysVersion("2020-12-03");
    request.setSysConnectTimeout(new Integer(3000));
    request.setSysReadTimeout(new Integer(5000));
    request.setSysMethod(MethodType.POST);
    String certificate = "—–BEGIN CERTIFICATE—–……—–END CERTIFICATE—–";
    request.putQueryParameter("Certificate", certificate);
    CommonResponse response = this.getCommonResponse(request);
    String body = response.getData();
    System.out.println(body);
    JSONObject jsonObject = JSON.parseObject(body);
    String certName = jsonObject.getString("CertName");
    long certId = jsonObject.getLongValue("CertId");

}

错误码

错误代码 错误描述
-202012031 参数为空。
-202012034 证书格式错误。
-202012035 证书已经保存,请勿重复操作。
-202012036 没有找到对应的CSR信息。
-202012037 证书与预期的CSR不匹配。