AWS ELB에 내장된 Let's Encrypt를 다운타임 제로로 업데이트
6772 단어 elbSSLletsencryptAWS
0. 배경
무료의 SSL 증명서라고 하는 것으로 화제의 Let's Encrypt입니다만, 실제의 이용을 위해서는 90일마다 증명서를 갱신하지 않으면 안 된다고 하는 제약으로부터, 좀처럼 프로덕션 이용하려면 허리가 무거워져 버립니다 .
(물론 본가에서는 전자동으로 갱신하는 것을 추천하고 있습니다.)
하물며,
AWS ELB
등의 로드 밸런서를 이용해, 부하에 복수의 Web 서버가 있으면, ACMEプロトコル
를 통과시키는 것만으로도 고생입니다.그래서 nginx의 역방향 프록시를 사용하여 기존 애플리케이션에 영향을주지 않고 Let's Encrypt를 업데이트하는 방법을 시도했습니다.
1. 전제
이번에는 다음과 같은 환경을 상정합니다.
www.example.com
에서받는 ELB 아래에 여러 웹 서버가 있음 stg.example.com
에서받는 ELB 아래에 웹 서버가 있음 www.example.com
및 stg.example.com
에 사용되는 인증서는 하나로 묶여 좋다 2. letsencrypt 실행 서버 준비
Amazon Linux에서
letsencrypt
실행은 여전히 불안정하며 프로덕션 서버에 불필요한 라이브러리를 설치하고 싶지 않으므로 letsencrypt
실행 전용 서버를 준비합니다.이번에는 CentOS7을 이용했습니다.
서버 시작 후 필요한 종속성은
git
뿐입니다.그런 다음
letsencrypt
를 설치합니다.또한 후술하는 역방향 프록시를 위해
firewalld
를 끕니다.(
firewalld
를 닫기 전에 보안 그룹이 닫혀 있는지 확인하십시오)쉘
# yum install git
# systemctl stop firewalld.service
# cd /usr/local/src
# git clone https://github.com/letsencrypt/letsencrypt.git
# cd letsencrypt
이것으로 서버 준비가 완료됩니다.
Route 53부터
letsencrypt.example.com
라는 도메인이 이 서버를 가리키도록 레코드를 지정해 봅시다.이대로 다음 명령을 실행하면
Let's Ecnrypt
에서 인증서를 가져오지만 지정된 모든 도메인에 대한 요청(ACMEプロトコル
)이 서버에 도착해야 하므로 실패합니다.3. 역방향 프록시 설정
www.example.com
및 stg.example.com
에 대한 액세스가 letsencrypt実行サーバ
로 우회하도록 각 서버에서 작동하는 nginx
리버스 프록시 설정을 구성합니다.Let's Encrypt의 ACME 프로토콜은
/.well-known/...
에 액세스하므로이 디렉토리 만 프록시하면 충분합니다.이 설정 덕분에 프로덕션 환경에 영향을 미치지 않습니다.
/etc/nginx/conf.d/app.conf
server {
listen 80;
server_name www.example.com;
...
# lets encrypt ACME proxy
location /.well-known {
proxy_pass http://letsencrypt.example.private;
}
}
여기서 역방향 프록시 대상 호스트를
letsencrypt.example.private
로 두면 다음에 업데이트할 때 동일한 작업을 건너뛸 수 있습니다.그런 다음 Route 53에서
letsencrypt.example.private
의 Private DNS를 구성합니다.4. letsencrypt 실행
letsencrypt実行サーバ
로 돌아가서 letsencryptコマンド
를 실행합시다.쉘
# pwd
/usr/local/src/letsencrypt
# ./letsencrypt-auto certonly --standalone -d www.example.com -d stg.example.com -d letsencrypt.example.com
위를 실행하면 다음 디렉토리에 인증서가 생성됩니다.
쉘
# cd /etc/letsencrypt/live/letsencrypt.example.com
# ls
cert.pem chain.pem fullchain.pem privkey.pem
privkey.pem
를 プライベートキー
, fullchain.pem
를 パブリックキー証明書
로 읽어 ELB SSL 인증서를 설정합니다.이것으로 다운타임 없이 ELB 인증서 갱신이 완료됩니다.
이번에는 시도하지 않았지만
AWS CLI
를 사용하여 전자동으로 만들 수 있습니다.5. 정리
무료로 사용할 수 있는 SSL 증명서라고는 하지만, 그 설정에는 아직 시들지 않은 부분이 있습니다.
Tokyo Region에서
AWS Certificate Manager
를 사용할 수 있을 때까지 이 기사가 도움이 되지 않을까요?6. 참고 URL
Reference
이 문제에 관하여(AWS ELB에 내장된 Let's Encrypt를 다운타임 제로로 업데이트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tady/items/b806acebe2f2ccdb687b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)