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

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

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


답변

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

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

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

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

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

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


답변

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

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

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


답변

당신은 말했다

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

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

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

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

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

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

얼룩


답변

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

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

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

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


답변

기술적으로 더 마음이 든다면이 사이트는 아마도 당신이 원하는 것입니다 : http://www.zytrax.com/tech/survival/ssl.html

경고 : 토끼 구멍이 깊어집니다 :).


답변