새로운 AWS Certificate Manager 서비스를 사용하여 SSL 인증서를 AWS EC2에 추가하는 방법


91

AWS는 새로운 서비스 AWS Certificate Manager를 내놓았 습니다 . 설명에서 얻은 한 가지는이 서비스를 사용하는 경우 더 이상 인증서 비용을 지불 할 필요가 없다는 것입니다.

Elastic Load Balancer (ELB) 및 CloudFront에 대한 인증서를 제공하고 있지만 EC2를 어디서도 찾지 못했습니다.

EC2에서 인증서를 사용할 수있는 방법이 있습니까?


1
당신은 무료로 신뢰할 수있는 인증서를 위해 letsencrypt.org 를 볼 수 있습니다. 크롬과 페이스 북과 같은 기여자들은 꽤 좋아 보입니다
Tom


1
아, 나는 이것에 대해 몰랐습니다. 그러나 나는 그들이 이것을 허용하지 않는 것이 옳다고 생각합니다. 제공된 기본 aws dns 이름을 사용하지 않고 다른 도메인 (예 : Route53을 통해)에 별칭을 생성 할 수 있습니까?
Tom

최근에 AWS Certificate Manager를 사용하여 SSL \ TLS 인증서를 생성 한 다음로드 밸런서 뒤에있는 EC2 인스턴스에 넣는 동영상 [April-2020]을 보았습니다. youtu.be/bWPTq8z1vFY 정말 도움이되었습니다.
nktsamba

답변:


109

Q : Amazon EC2 인스턴스 또는 자체 서버에서 인증서를 사용할 수 있습니까?

아니요. 현재 ACM에서 제공하는 인증서는 특정 AWS 서비스에서만 사용할 수 있습니다.


Q : ACM에서 제공하는 인증서를 사용할 수있는 AWS 서비스는 무엇입니까?

다음 AWS 서비스에서 ACM을 사용할 수 있습니다.

• Elastic Load Balancing

• Amazon CloudFront

• AWS Elastic Beanstalk

• Amazon API Gateway

https://aws.amazon.com/certificate-manager/faqs/

Amazon Certificate Manager (ACM) 에서 생성 한 인증서 는 프라이빗 키에 대한 액세스 권한이 없기 때문에 EC2 또는 AWS 외부 서버와 같이 직접 하위 수준 액세스 권한이있는 리소스에 설치할 수 없습니다 . 이러한 인증서는 AWS 인프라 (ELB 및 CloudFront)에서 관리하는 리소스에만 배포 할 수 있습니다. AWS 인프라는 생성하는 인증서에 대한 개인 키의 유일한 복사본을 보유하고 감사 가능한 내부 액세스 제어를 통해 엄격한 보안을 유지합니다. .

EC2 에서 오는 콘텐츠에 이러한 인증서를 사용하려면 EC2 머신이 CloudFront 또는 ELB 뒤에서 수신 대기 (또는 둘 다 계단식으로 작동)해야합니다. 이러한 인증서를 EC2 머신에 직접 설치할 수 없기 때문입니다. .


11
좋은 소식은 인증서를 발급하고 여기에서 설치할 수 없다는 사실을 알게 된 경우 비용이 청구되지 않는다는 것입니다.
kraftydevil

1
lol @kraftydevil 나는 당신이 요점이 있다고 생각합니다. 참고 것을 letsencrypt.org은 어디서든 당신이 좋아 설치할 수없는 SSL 인증서에서의 합법적 인 인식, 비영리 소스입니다. (그리고, 내가하자 암호화 아무 제휴가없는, 추가 할 수 있습니다.)
마이클 - sqlbot

6
@EngineerDollery 아니요, 특정 경우에만 해당됩니다. Let 's Encrypt는 EC2에서 절대적으로 사용할 수 있습니다. 여러분이 할 수없는 일은 EC2 *.amazonaws.com호스트 이름에 대한 Let 's Encrypt 인증서를 얻는 것입니다 . 다른 곳과 마찬가지로 Let 's Encrypt를 사용할 수 있습니다.
마이클 - sqlbot

2
EC2에 배포 된 자동 허용 암호화 인증서가있는 예제 링크 : docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
Efren

나는 ELB 설정에 따라 모든 것을 이제 ELB에 A 레코드를 가리 켰을 때 502 Bad Gateway를
얻었습니다

2

아니요, EC2에 인증서를 배포하는 데 aws 인증서 관리자를 사용할 수 없습니다. 인증서 관리자 인증서는 Cloudfront 및 탄력적 부하 분산 장치에 대해서만 배포 할 수 있습니다. Inoredr을 ec2에서 사용하려면 elb를 ec2 위에 배치해야하므로 클라이언트에서로드 밸런서로의 요청이 https로 보호되고 elb에서 ec2 웹 서버로의 웹 서버가 http에있게됩니다.


1

AWS ACM Cert를 내부 용도로만 사용하는 경우 AWS ACM 사설 CA를 사용하여 인증서를 발급 할 수 있습니다 (루트 CA가 공개적으로 신뢰할 수있는 CA 인 경우에도 공용 / 외부 트래픽 용도로 사용할 수 있다고 생각합니다).

https://docs.aws.amazon.com/acm-pca/latest/userguide/PcaGetStarted.html

애플리케이션 / EC2 / 컨테이너를 시작하는 동안 ACM 사설 CA에서 발급 한 인증서 / 개인 키를 대상으로 내보내고 트래픽을 처리하기 위해 참조하는 단계를 설정합니다.

https://docs.aws.amazon.com/cli/latest/reference/acm/export-certificate.html

한 가지 좋은 점은 모든 사람이 인증서의 개인 키를 다운로드 할 수 없도록 IAM 역할을 사용하여 인증서 내보내기 기능을 호출 할 수있는 사람을 제어 할 수 있다는 것입니다.

한 가지 단점은 사설 CA가 고가의 AWS 서비스 ($ 400 / 월)라는 것입니다. https://aws.amazon.com/certificate-manager/pricing/


ACM PCA와 함께 export-certificate를 사용할 수는 없지만 필요하지도 않습니다. 이미 프라이빗 키가 있고 get-certificate가 인증서와 체인을 제공합니다.
Free Willaert

@FreeWillaert 나는 꽤 확신합니다. get-certificate로 개인 키 부분을 얻지 못할 것입니다. 이 CLI 설명서를 확인하십시오 . 및 . CLI 응답의 두 출력을 모두 확인하십시오. 이 CLI 명령을 이미 테스트했습니다.
Imran

@FreeWillaert 예 :). 위의 CLI 명령은 Docker 시작 스크립트 또는 EC2 사용자 데이터 스크립트에서 사용하여 런타임에 프라이빗 키 인증서를 다운로드하고 TLS 트래픽을 제공하기 위해이를 활용할 수 있습니다. 특히 ASG에서. 좋은 부분은 모든 사람이 개인 키에 액세스 할 수 없도록 IAM 역할을 사용하여 위의 CLI 명령을 호출 할 수있는 사람을 제어 할 수 있다는 것입니다.
Imran

1
@Imran 당신은 One downside with this is, private CA is expensive AWS service($400/month).예를 들어 내가이 대답을 두 번째로 읽지 않았다면 그것을 놓칠 것 같이 상단에 굵은 글씨 를 써야합니다
Piekarski D

@PiekarskiD 완료. 제안 해 주셔서 감사합니다 !!. 내 답변이 마음에 들면 언제든지 찬성 할 수 있습니다 !!.
Imran

0

위의 설명에 추가하면 AWS Certificate Manager를 사용할 수 없지만 IIS를 실행하는 Windows 서버의 ec2에 Let 's Encrypt 인증서를 추가 할 수 있으며 매우 쉽습니다.

  1. 탄력적 IP를 ec2 인스턴스와 연결합니다.

  2. 등록 된 도메인이 있는지 확인하십시오. 인스턴스와 함께 제공되는 ec2----------.us-east-1.compute.amazonaws.com 유형 이름은 사용할 수 없습니다.

  3. 도메인 공급자의 DNS 설정을 통해 도메인이 탄력적 IP를 가리 키도록합니다.

  4. ec2 인스턴스에 연결하고 사이트 바인딩에 도메인 이름을 추가합니다.

  5. https://github.com/PKISharp/win-acme/releases로 이동합니다.

  6. 자산 아래에서 최신 버전 (예 : win-acme.v2.0.10.444.zip)을 사용하십시오. 이것은 필요한 유일한 자산 폴더입니다.

  7. 폴더의 압축을 풀고 관리자 권한으로 터미널을 열고 압축을 푼 폴더로 cd합니다.

  8. wacs.exe를 실행하고 지시를 따릅니다.

  9. 인스턴스에 할당 된 보안 그룹이 IIS에서 선택한 HTTPS 포트를 통해 트래픽 (최소한 자신의 IP)을 허용하는지 확인하십시오. 기본적으로 포트 443입니다.

나는 이것을 알아낼 때 아래 링크가 도움이된다는 것을 알았습니다. 더 많은 도움이 필요한 경우 이전 릴리스를 사용하는 비디오가 있지만 동일한 아이디어입니다.

https://www.youtube.com/watch?v=fq5OUOjumuM

또한이 기사가 도움이 될 수 있습니다.

https://weblog.west-wind.com/posts/2016/feb/22/using-lets-encrypt-with-iis-on-windows

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.