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 문서를 참고하세요.