중요 보안 용어

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가 최종 인증서를 전송하고 개발자는 해당 인증서 (또는 인증서 체인일 가능성이 높음)와 비공개 키를 웹 서버에 설치합니다.