SSL 인증서는 어떻게 확인됩니까?


219

SSL 인증서를 안전하게 확인하는 데 필요한 일련의 단계는 무엇입니까? 내 (매우 제한적) 이해는 https 사이트를 방문하면 서버가 클라이언트 (브라우저)에게 인증서를 보내고 브라우저가 해당 인증서에서 인증서 발급자 정보를 얻은 다음 해당 정보를 사용하여 발급자에게 연락하고 어떻게 든 비교한다는 것입니다 유효성 인증서.

  • 이것이 정확히 어떻게 이루어 집니까?
  • 프로세스가 중간자 공격에 면역이되는 것은 어떻습니까?
  • 임의의 사람이 중간자 (man-in-the-middle) 공격에 사용하기 위해 자체 검증 서비스를 설정하지 못하도록 막는 것은 무엇입니까?


답변:


308

다음은 매우 간단한 설명입니다.

  1. 웹 브라우저는 웹 서버의 공개 키가 포함 된 웹 서버의 인증서를 다운로드합니다. 이 인증서는 신뢰할 수있는 인증 기관의 개인 키로 서명됩니다.

  2. 웹 브라우저는 모든 주요 인증 기관의 공개 키와 함께 설치됩니다. 이 공개 키를 사용하여 웹 서버의 인증서가 실제로 신뢰할 수있는 인증 기관에 의해 서명되었는지 확인합니다.

  3. 인증서에는 웹 서버의 도메인 이름 및 / 또는 IP 주소가 포함되어 있습니다. 웹 브라우저는 인증 기관에 인증서에 나열된 주소가 연결이 열려있는 주소인지 확인합니다.

  4. 웹 브라우저는이 연결에서 HTTP 트래픽을 암호화하는 데 사용되는 공유 대칭 키를 생성합니다. 이것은 모든 것을 위해 공개 / 개인 키 암호화를 사용하는 것보다 훨씬 효율적입니다. 브라우저는 대칭 키를 웹 서버의 공개 키로 암호화 한 다음 다시 전송하므로 웹 서버에만 개인 키가 있으므로 웹 서버 만 암호를 해독 할 수 있습니다.

인증 기관 (CA)은 MITM (Man-in-the-Middle) 공격을 방지하는 데 필수적입니다. 그러나 서명되지 않은 인증서라도 공유 대칭 키에 액세스 할 수있는 방법이 없기 때문에 암호화 된 트래픽을 수동으로 수신하지 못하게됩니다.


4
1.5 단계에서 서버는 인증서와 관련된 개인 키로 무언가에 "서명"합니다. 이것은 이름 / IP 확인과 결합하여 인증서의 소유 사이트 만 인증서를 제공합니다.
Darron

68
amazon.com에 연결하는 Firefox를 사용하여이 프로세스의 완전한 작동 예를 보려면 moserware.com/2009/06/first-few-milliseconds-of-https.html
Jeff Moser

9
브라우저에 모든 주요 인증 기관의 공개 키가 설치되어 있다는 것을 몰랐습니다. 이제 MITM 위험없이 SSL 인증서를 확인하는 방법을 알고 있습니다. :) 감사!
OneChillDude

5
서버는 CAuthority에서 인증서를 요청해야하므로 요청을 보냅니다. CA가 서버가 유효한지 어떻게 확인할 수 있습니까?
voipp

4
@voipp : 좋은 질문입니다! 역사적으로 "이메일을 이메일로 보내 webmaster@<domain-being-verified>거나"이 파일을 소유하고 있음을 증명하기 위해이 파일을 도메인에 배치 " 와 같은 몇 가지 접근 방식 이 있었지만 실제로는 CA가 인증하지 않은 도메인에 대한 인증서를 발급하는 사람들에게 문제가있었습니다. 자체-유명하게 누군가 gmail.com에 대한 인증서를 발급하기 위해 그늘진 CA를 얻었습니다!
Eli Courtwright

58

인증서를 구입하는 것 외에도 (위에서 언급 한 바와 같이) 무료로 자신 만의 인증서를 만들 수도 있습니다. 이것을 "자체 서명 된 인증서"라고합니다. 자체 서명 된 인증서와 구매 한 인증서의 차이점은 간단합니다. 구매 한 인증서는 브라우저가 이미 알고있는 인증 기관에서 서명 한 것입니다. 즉, 브라우저는 구매 한 인증서의 진위 여부를 쉽게 확인할 수 있습니다.

불행히도 이것은 자체 서명 된 인증서가 GoDaddy 및 Verisign과 같은 상업용 CA에서 판매하는 것보다 본질적으로 안전하지 않으며, 사용하는 경우 브라우저 경고 / 예외를 따라야한다는 잘못된 오해를 초래했습니다. 이것은 잘못된 것 입니다.

자체 서명 된 인증서 (또는 bobince가 제안한 CA 인증서)를 안전하게 배포하고 사이트를 사용할 브라우저에 설치하는 경우 구매 한 인증서 만큼 안전하고 중간자에 취약하지 않습니다. 공격 및 인증서 위조. 분명히 이것은 소수의 사람들 만 사이트 (예 : 내부 앱, 개인 블로그 등)에 안전하게 액세스해야하는 경우에만 실현 가능하다는 것을 의미합니다.


1
실제로, 자신의 인증서를 안전하게 배포하는 것이 고양이를 보호하는 한 가지 방법이지만 훨씬 더 쉬운 방법은 소위 "개방형"CA 중 하나를 사용하는 것입니다. CACert.org는 내가 가장 좋아하는 것입니다. 인증서 발급을 보호하기 위해 취한 단계를 신뢰하는 한 루트 인증서를 가져 오는 것이 안전합니다.
nsayer

6
이 의견이 마음에 들지만 불행히도 CA의 중요한 약점을 강조합니다. Bob Smith에서 CA 인증서를 가져 오면 Bob Smith는 모든 도메인 (google.com 및 chase.com 포함)에 대한 인증서에 서명 할 수 있습니다. 이것이 실제로 GoDaddy / Verisign이 OS에 포함되기 위해 많은 돈을 지불하는 이유입니다. 보안 담당자가 악의적 인 사람의 인증서에 서명하지 않았는지 확인하기 위해 보안 검사를받습니다. "이 CA는 mysite.com의 인증서에만 서명 할 수 있습니다"라고 말할 수 있어야한다고 생각합니다.
Natalie Adams

자체 서명 된 인증서는 더 안전하지 않습니다. CA가 없어도되는 서명을하기 위해 지불 할 수 있기 때문입니다. CA 인증서를 끝점에 안전하게 배포 할 수 있으면 항상 자체 서명 된 인증서를 사용하십시오.
javaPhobic

대부분의 주요 브라우저에서 무료로 검증 된 CA가 있습니까? 이메일과 도메인 이름을 소유하고 있음을 확인하기위한 기본 인증서를 찾고 있습니다. 내가 찾은 것은 대부분의 주요 브라우저에 없습니다.
Alex Kwitny

@NathanAdams 이론적으로 , 큰 CA는 당신이 묘사 한 것처럼 가짜 인증서 발급을 막기 위해 요청을 조사해야합니다 ...하지만이 이야기를 읽으십시오 : stripe.ian.sh
nsayer

38

당신은 말했다

브라우저는 해당 인증서에서 인증서 발급자 정보를 가져온 다음이를 사용하여 발급자에게 연락하여 인증서의 유효성을 비교합니다.

클라이언트는 다음 두 가지 이유로 발급자와 확인할 필요가 없습니다.

  1. 모든 브라우저에는 모든 주요 CA 공개 키 목록이 사전 설치되어 있습니다.
  2. 인증서는 서명되어 있으며, 서명 자체는 클라이언트가 발급자의 서버에 접속하지 않고 인증서가 진짜인지 확인할 수 있기 때문에 인증서가 유효하다는 충분한 증거입니다. 이것이 비대칭 암호화의 아름다움입니다.

2가 없으면 1을 수행 할 수 없습니다.

이것은 내가 전에 만든 큰 다이어그램 에서 더 잘 설명됩니다.

(하단에 "서명은 무엇입니까?"로 건너 뛰십시오)

얼룩


9
이것은 받아 들여진 대답이어야합니다. @Eli Courtwright의 답변은 인증서가 어떻게 작동하는지 이해하기 위해 imho를 짧게하는 방법입니다.
Felix Crazzolara

한 번만 읽으면 충분하지 않지만 SSL에 대해 잘 알고 있다면 실제로 모든 것을 하나로 모을 수 있습니다. 좋은 작업!
Cameron Gagnon

환상적인 이미지. 마지막으로 내 질문을 설명하는 것입니다. 내가 깊이가는 곳마다 "브라우저가 인증서가 올바른지 확인합니다"라고 말했습니다. 그러나 어떻게해야합니까?. 이것은 답변을 제공합니다.
ori6151

8

클라이언트에는 미리 시드 된 SSL 인증 기관의 공개 키 저장소가 있습니다. 서버를 신뢰할 수 있으려면 서버의 인증서에서 중간 기관을 통해 소위 "루트"인증서 중 하나까지의 신뢰 체인이 있어야합니다.

신뢰할 수있는 기관 목록을 검사 및 / 또는 변경할 수 있습니다. 당신이 일하는 회사 나 당신이 다니는 학교와 같이, 당신이 신뢰하는 지역 당국에 대한 인증서를 추가하기 위해 종종 이것을합니다.

미리 설정 한 목록은 사용하는 클라이언트에 따라 다를 수 있습니다. 큰 SSL 인증서 공급 업체는 루트 인증서가 모든 주요 브라우저 ($$$)에 있는지 확인합니다.

침입자가 신뢰할 수있는 루트 인증서의 개인 키를 가지고 있지 않으면 몽키 인 더 미들 공격은 "불가능"합니다. 해당 인증서가 널리 배포되므로 이러한 개인 키를 노출하면 전자 상거래의 보안에 일반적으로 심각한 영향을 미칩니다. 그로 인해 이러한 개인 키는 매우 밀접하게 보호됩니다.


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