如何下载通过CloudFormation创建的IoT证书?

时间:2017-03-07 21:53:40

标签: amazon-web-services certificate amazon-cloudformation aws-iot

我正在使用AWS CloudFormation创建物联网ThingPolicyCertificate。我的堆栈成功创建,但是,我无法访问CloudFormation创建的证书文件。

查看aws文档here,您可以通过CloudFormation从证书中获得的唯一输出是ARNCertificate ID。但是,无法使用我能看到的ARNCertificate ID来检索您的证书。

如果您通过AWS IoT控制台上传证书签名请求(CSR),它会显示一个下载链接,您可以获取证书文件。

enter image description here

不幸的是,我需要使用CloudFormation来创建IoT Certificate。但是,看起来您可以在创建证书后下载证书。具体而言,它指出:

  

可以随时检索证书

我没有成功地搜索文档和网络界面,以了解我如何“随时”下载我的证书。我对证书和私钥的整个世界都比较陌生,所以希望我错过了一些简单的事情。

是否有人知道是否可以从CloudFormation创建的IoT Certificate获取您的证书?

2 个答案:

答案 0 :(得分:1)

使用CloudFormation(通过CSR)创建的证书可以通过以下方式检索

Aws IoT网页

只需导航至安全 - 证书,然后点击...并选择下载。

enter image description here

AWS CLI

正如您所提到的,CLI也是一个选项

aws iot describe-certificate --certificate-id fcd371fcd371fcd371fcd371fcd371fcd371fcd371fcd371fcd371fcd371fcd3

将返回

{
    "certificateDescription": {
        "certificateArn": "arn:aws:iot:eu-central-1:xxxxxx", 
        "status": "ACTIVE", 
        "certificateId": "fcd371fcd371fcd371fcd371fcd371fcd371fcd371fcd371fcd371fcd371fcd3", 
        "lastModifiedDate": 1519840881.49, 
        "certificatePem": "-----BEGIN CERTIFICATE-----\nMIIDsTCCApmg.....VsAzFQ==\n-----END CERTIFICATE-----\n", 
        "transferData": {}, 
        "ownedBy": "123456789", 
        "creationDate": 1519840820.888
    }

Amazon IoT SDK

还可以用于根据证书ID(可以通过cloudformation输出)将证书内容(PEM格式)检索为字符串

import com.amazonaws.services.iot.AWSIot;
import com.amazonaws.services.iot.AWSIotClientBuilder;
import com.amazonaws.services.iot.model.DescribeCertificateRequest;
import com.amazonaws.services.iot.model.DescribeCertificateResult;

DescribeCertificateRequest describeCertificateRequest = new DescribeCertificateRequest();
describeCertificateRequest.setCertificateId("fcd371fcd371fcd371fcd371fcd371fcd371fcd371fcd371fcd371fcd371fcd3");
DescribeCertificateResult describeCertificateResult = awsIot.describeCertificate(describeCertificateRequest);
describeCertificateResult.getCertificateDescription().getCertificatePem();

AFAIK无法将其作为变量输出到云形态模板中。

答案 1 :(得分:0)

啊我找到了使用AWS CLI的方法。但确实需要通过CloudFormation获得它的方法:(

http://docs.aws.amazon.com/cli/latest/reference/iot/describe-certificate.html