AWS SDK 또는 CLI로 UploadServerCertificate 사용하기

AWS SDK 또는 CLI로 UploadServerCertificate 사용하기

다음 코드 예시는 UploadServerCertificate을(를) 사용하는 방법을 보여줘요.

출처: 문서

본문

AWS CLI

AWS 계정에 서버 인증서를 업로드하려면

다음 upload-server-certificate 명령은 AWS 계정에 서버 인증서를 업로드해요. 이 예시에서 인증서는 public_key_cert_file.pem 파일, 연결된 프라이빗 키는 my_private_key.pem 파일, CA(인증 기관)가 제공한 인증서 체인은 my_certificate_chain_file.pem 파일에 있어요. 파일 업로드가 끝나면 myServerCertificate 이름으로 사용할 수 있어요. file://로 시작하는 파라미터는 파일 이름 자체가 아니라 파일 내용을 읽어 파라미터 값으로 쓰라는 뜻이에요.

aws iam upload-server-certificate \
    --server-certificate-name
myServerCertificate
 \
    --certificate-body
file://public_key_cert_file.pem
 \
    --private-key
file://my_private_key.pem
 \
    --certificate-chain
file://my_certificate_chain_file.pem

출력:

{

    "ServerCertificateMetadata":
{

        "Path": "/",
        "ServerCertificateName": "myServerCertificate",
        "ServerCertificateId": "ASCAEXAMPLE123EXAMPLE",
        "Arn": "arn:aws:iam::1234567989012:server-certificate/myServerCertificate",
        "UploadDate": "2019-04-22T21:13:44+00:00",
        "Expiration": "2019-10-15T22:23:16+00:00"
    }
}

더 자세한 내용은 Using IAM 가이드의 '서버 인증서 생성·업로드·삭제' 문서를 참고하세요.

API 상세 내용은 AWS CLI Command Reference의 UploadServerCertificate 문서를 참고하세요.

SDK for JavaScript (v3)

참고: GitHub에 더 많은 내용이 있어요. AWS Code Examples Repository에서 전체 예시를 찾아 실행·설정 방법을 배울 수 있어요.

import
{
 UploadServerCertificateCommand, IAMClient } from "@aws-sdk/client-iam";
import
{
 readFileSync } from "node:fs";
import
{
 dirnameFromMetaUrl } from "@aws-doc-sdk-examples/lib/utils/util-fs.js";
import * as path from "node:path";

const client = new IAMClient(
{
});

const certMessage = `Generate a certificate and key with the following command, or the equivalent for your system.

openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
-keyout example.key -out example.crt -subj "/CN=example.com" \
-addext "subjectAltName=DNS:example.com,DNS:www.example.net,IP:10.0.0.1"
`;

const getCertAndKey = () =>
{

  try
{

    const cert = readFileSync(
      path.join(dirnameFromMetaUrl(import.meta.url), "./example.crt"),
    );
    const key = readFileSync(
      path.join(dirnameFromMetaUrl(import.meta.url), "./example.key"),
    );
    return
{
 cert, key };
  } catch (err)
{

    if (err.code === "ENOENT")
{

      throw new Error(
        `Certificate and/or private key not found. $
{
certMessage}`,
      );
    }

    throw err;
  }
};

/**
 *
 * @param
{
string} certificateName
 */
export const uploadServerCertificate = (certificateName) =>
{

  const
{
 cert, key } = getCertAndKey();
  const command = new UploadServerCertificateCommand(
{

    ServerCertificateName: certificateName,
    CertificateBody: cert.toString(),
    PrivateKey: key.toString(),
  });

  return client.send(command);
};

API 상세 내용은 AWS SDK for JavaScript API Reference의 UploadServerCertificate 문서를 참고하세요.

Tools for PowerShell V4

예시 1: 이 예시는 IAM 계정에 새 서버 인증서를 업로드해요. 인증서 본문·프라이빗 키·(선택) 인증서 체인이 담긴 파일은 모두 PEM 인코딩이어야 해요. 파라미터에는 파일 이름이 아니라 파일의 실제 내용이 필요하다는 점을 참고하세요. 파일 내용을 제대로 처리하려면 -Raw 스위치 파라미터를 꼭 사용해야 해요.

Publish-IAMServerCertificate -ServerCertificateName MyTestCert -CertificateBody (Get-Content -Raw server.crt) -PrivateKey (Get-Content -Raw server.key)

출력:

Arn                   : arn:aws:iam::123456789012:server-certificate/MyTestCert
Expiration            : 1/14/2018 9:52:36 AM
Path                  : /
ServerCertificateId   : ASCAJIEXAMPLE7J7HQZYW
ServerCertificateName : MyTestCert
UploadDate            : 4/21/2015 11:14:16 AM

API 상세 내용은 AWS Tools for PowerShell Cmdlet Reference (V4)의 UploadServerCertificate 문서를 참고하세요.

Tools for PowerShell V5

예시 1: 이 예시는 IAM 계정에 새 서버 인증서를 업로드해요. 인증서 본문·프라이빗 키·(선택) 인증서 체인이 담긴 파일은 모두 PEM 인코딩이어야 해요. 파라미터에는 파일 이름이 아니라 파일의 실제 내용이 필요하다는 점을 참고하세요. 파일 내용을 제대로 처리하려면 -Raw 스위치 파라미터를 꼭 사용해야 해요.

Publish-IAMServerCertificate -ServerCertificateName MyTestCert -CertificateBody (Get-Content -Raw server.crt) -PrivateKey (Get-Content -Raw server.key)

출력:

Arn                   : arn:aws:iam::123456789012:server-certificate/MyTestCert
Expiration            : 1/14/2018 9:52:36 AM
Path                  : /
ServerCertificateId   : ASCAJIEXAMPLE7J7HQZYW
ServerCertificateName : MyTestCert
UploadDate            : 4/21/2015 11:14:16 AM

API 상세 내용은 AWS Tools for PowerShell Cmdlet Reference (V5)의 UploadServerCertificate 문서를 참고하세요.

더 알아보기 (Learn more)