개발자가 HTTPS로 마이그레이션할 때 직면하는 두 가지 장애물은 개념과 용어입니다. 이 가이드에서는 개념과 용어에 대해 간단히 설명합니다.
요약
- 공개/비공개 키를 사용해 브라우저와 서버 간에 메시지를 서명하고 복호화했습니다.
- 인증 기관 (CA)은 공개 키와 공용 DNS 이름 (예: "www.foobar.com") 간의 매핑을 보증하는 조직입니다.
- CSR (인증서 서명 요청)는 공개 키를 소유하는 엔터티에 대한 일부 메타데이터와 함께 공개 키를 번들로 묶는 데이터 형식입니다.
공개 키와 비공개 키 쌍이란 무엇인가요?
공개 키/비공개 키 쌍은 암호화 및 복호화 키로 사용되며 특별한 수학적 관계를 공유하는 매우 큰 숫자의 쌍입니다. 키 쌍의 공통 시스템은 RSA 암호화 시스템입니다. 공개 키는 메시지를 암호화하는 데 사용되며, 해당 비공개 키를 통해서만 메시지를 복호화할 수 있습니다. 웹 서버는 자체 공개 키를 전 세계에 알리고 클라이언트 (예: 웹브라우저)는 이를 사용하여 서버에 대한 보안 채널을 부트스트랩합니다.
인증 기관이란 무엇인가요?
인증 기관 (CA)은 공개 키와 공개 DNS 이름 (예: 'www.foobar.com') 간의 매핑을 보증하는 조직입니다. 예를 들어 클라이언트가 특정 공개 키가 www.foobar.com의 참 공개 키인지 여부를 어떻게 알 수 있나요? 사전, 알 방법이 없습니다. CA는 자체 비공개 키를 사용하여 웹사이트의 공개 키를 암호화 방식으로 서명함으로써 특정 키가 특정 사이트의 실제 키임을 보증합니다. 이 서명은 전산으로는 위조가 불가능합니다. 브라우저 (및 기타 클라이언트)는 잘 알려진 CA가 소유한 공개 키를 포함하는 트러스트 앵커 저장소를 유지하고 이러한 공개 키를 사용하여 CA의 서명을 암호화 방식으로 확인합니다.
X.509 인증서는 공개 키를 소유하는 항목에 대한 일부 메타데이터와 함께 공개 키를 번들로 묶는 데이터 형식입니다. 웹의 경우 키 소유자는 사이트 운영자이고 중요한 메타데이터는 웹 서버의 DNS 이름입니다. 클라이언트가 HTTPS 웹 서버에 연결할 때 웹 서버는 클라이언트가 확인할 수 있도록 인증서를 제공합니다. 클라이언트는 인증서가 만료되지 않았는지, DNS 이름이 클라이언트가 연결하려는 서버의 이름과 일치하는지, 알려진 신뢰 앵커 CA가 인증서에 서명했는지 확인합니다. 대부분의 경우 CA는 웹 서버 인증서에 직접 서명하지 않습니다. 일반적으로 신뢰 앵커를 중간 서명자 및 마지막으로 웹 서버의 자체 인증서 (최종 항목)에 연결하는 인증서 체인이 있습니다.
인증서 서명 요청이란 무엇인가요?
인증서 서명 요청 (CSR)은 인증서처럼 공개 키를 소유하는 항목에 대한 일부 메타데이터와 함께 공개 키를 번들로 묶는 데이터 형식입니다. 그러나 클라이언트는 CSR을 해석하지 않고 CA가 해석합니다. CA가 웹 서버의 공개 키를 보증하도록 하려면 CA에 CSR을 보냅니다. CA는 CSR의 정보를 검증하고 이를 사용하여 인증서를 생성합니다. 그러면 CA에서 최종 인증서를 전송하고 사용자는 웹 서버에 해당 인증서 (또는 인증서 체인일 가능성이 더 높음)와 비공개 키를 설치합니다.