Community

Let's Encrypt는 어떻게 자동으로 인증서를 갱신할 수 있을까?

어느 솔루션에서 인증서 설정을 하다가, 도메인 인증에 OV, DV 등 다양한 인증방식 있음을 알게 되었습니다. 그 과정에서 Let's Encrypt만 자동 갱신이 가능하다는 사실을 알게 되었는데, 알고보니 ACME(Automated Certificate Management Environment) 라는 프로토콜을 사용하여 자동화를 지원하고 있었습니다. 이쪽 분야는 잘 모르지만, 궁금증이 생겨서 조사 및 테스트를 해보았습니다. 1/ 우리가 흔히 이야기하는 서버 인증서는 모두가 신뢰할 수 있는 CA(Certificate Authority)가 발급해줍니다. Let's Encrypt도 CA 중 하나입니다. 2/ CA는 인증서 발급을 할 때, 도메인 소유주를 검증하는데, 이때 도메인 검증(DV), 조직 검증(OV), 확장 검증(EV) 방식 중 하나를 통해 검증을 진행합니다. DV는 DNS 기록을 확인하는 방식이고, OV는 조직의 실제 존재 여부를 확인하기 위해 이메일 검증 등을 추가로 실시하는 방식입니다. 마지막으로 EV는 법적, 물리적 존재 여부 등까지 확인하는 가장 엄격한 검증 방식입니다. 3/ 인증서를 자동으로 발급하고 갱신하기 위해서, ACME 클라이언트를 서버에 설치합니다. ACME 클라이언트는 ACME 서버와 통신하는데, 이때 ACME 서버가 바로 Let's Encrypt입니다. 4/ ACME 클라이언트는 CA에 계정을 등록한 후, 인증서 발급을 요청합니다. 이때, ACME 서버는 도메인 소유자 검증을 요청하는데, 보통은 TXT 레코드를 추가하는 방식으로 진행됩니다. Certbot과 같은 오픈소스 ACME 클라이언트는 Route53, Cloudflare에 자동으로 TXT 파일을 등록할 수 있는 기능을 제공합니다. 5/ 도메인 검증이 완료되면, CA는 인증서를 발급합니다. ACME 클라이언트는 발급된 인증서를 다운로드하고, 설정해야하는 곳에 추가합니다. Nginx라면, ssl_certificate, ssl_certificate_key에 들어갈 값을 세팅해줍니다. 그리고 웹 서버를 재기동하면, 유효한 인증서를 사용할 수 있습니다. 6/ ACME 클라이언트는 인증서 만료기간을 트래킹하다가, 일정 시점이 오면 갱신 요청을 합니다. 갱신을 할 때는 새롭게 도메인 소유주 검증을 진행합니다. 검증이 끝나면 새로운 인증서를 발급해주고, 클라이언트는 이를 기존 인증서와 교체합니다. 그 후 웹 서버를 재기동하면, 이제는 새로운 인증서를 통해 TLS 연결을 맺을 수 있습니다. 겉핥기로 공부한 면도 있지만, 이번 기회에 ACME 라는 프로토콜이 왜 필요한지, 어떻게 웹 호스팅 업체에서 Let's Encrypt를 활용해 인증서를 제공할 수 있었는지 알 수 있었습니다. 혹시나 ACME 프로토콜을 처음 들어보셨거나, 관심 있으신 분은 아래 링크를 참조해주세요! https://techchallengearena.substack.com/p/what-is-the-acme-protocol #devops #security #sslcertificate #letsencrypt #acmeprotocol

알림

알림이 없습니다