SSL 서버 인증은 통신하는 사이트가 당사자인지 확인합니다. 인증은 공개 키 암호화의 표준 기술을 통해 서버의 ID를 확인하여
서버의 인증서와 공용 ID가 유효하고 클라이언트의 신뢰할 수 있는 CA 목록에 나열된 인증 기관에서 발급한 것인지 확인합니다.
인증 기관에서 발급한 인증 인증서를 보유한 "신뢰할 수 있는" 서버와의 통신은
보안 환경 설정에 중요합니다. 인증 인증서는 공개 키를 개인 키 소유자의 ID에 바인드하는
디지털 서명된 문서입니다. 인증은 연결 시 발생하며 애플리케이션 또는 애플리케이션 프로토콜과 관계없습니다. SSL을 사용하여
인증은 X.509 ITU-T 표준에 설명된
형식의 데이터 블록인 인증서 교환을 통해 수행됩니다. X.509 인증서는
인증 기관에서 발급하고 디지털 서명합니다.
그러나 SSL 사용이 클라이언트가 올바른 서버와 통신하고 있음을 보증하지는 않습니다. "Server1"와 "Server2" 둘 다
클라이언트("Client")가 신뢰하는 CA의 유효한 인증서를 갖고 있는 다음 시나리오를 고려하십시오. 클라이언트는 Server1과 보안 세션을 원하지만
Server2는 통신을 도청하고 싶어하고 물리적으로 이를 가능하게 하는 장소에 위치합니다.
- Client가 Server1로 SSL 세션에 대한 요청을 보냅니다. 대신에, 요청(및 모든 후속 트래픽)은 Server2를
통과합니다. Client의 요청을 Server1로 전달하는 대신 Server2는 Client로 자체 인증서를 전송하여
요청에 직접 응답합니다.
- Client가 Server2의 인증서를 수신하고, 신뢰할 수 있는 CA 목록을 확인합니다. Server2의 인증서가
Server1의 인증서와 동일한 CA에서 서명한 것이므로 Client는 인증서을 승인하고 Server2와 보안 세션을 작성합니다.
- Client와 보안 세션을 완료한 후 Server2는 Server1과 자체 SSL 세션을 요청하고 작성합니다. 이 시점에서
Client는 Server2로 암호화된 정보를 전송합니다. Server2는 정보를 복호화하고 다시 암호화한 후
Server1로 전송합니다. 반대 방향으로 플로우되는 정보의 경우도 마찬가지입니다. 그 결과 모든 데이터가 인터넷을 통해 플로우될 때 암호화되더라도
Server2는 정보를 읽을 수 있으며 심지어 변경할 수도 있습니다.
SSL 서버 인증은 이 결과를 방지하도록 디자인됩니다.
서버 인증을 사용할 수 있을 때 클라이언트는 서버의 인증서를 신뢰할 수 있다고 확인한 후
인증서의 인터넷 이름이 서버의 인터넷 이름과 일치하는지 확인합니다. 일치하면
SSL 협상이 계속됩니다. 일치하지 않으면 연결이 종료됩니다.
서버 인증을 사용하여 위에 설명된 보안 시나리오는 다음과 같이 진행됩니다.
- Client가 Server1로 SSL 세션에 대한 요청을 보냅니다. 요청(및 모든 후속 트래픽)은 실제로 Server2를
통과합니다. Client의 요청을 Server1로 전달하는 대신 Server2는 Client로 자체 인증서를 전송하여
Client의 요청에 직접 응답합니다.
- Client가 Server2의 인증서를 수신하고, 신뢰할 수 있는 CA 목록을 확인합니다. Server2의 인증서가
Server1의 인증서와 동일한 CA에서 서명한 것이므로 Client는 인증서을 승인하고 Server2와 보안 세션을 작성합니다.
- 보안 세션이 완료된 후 실제 데이터가 전송되거나 수신되기 전에
Client는 수신한 인증서의 인터넷 이름을 통신할 서버의 이름과 비교합니다. 이름이 일치하지 않기 때문에
Client는 연결을 계속해서는 안됨을 알고 연결을 끊습니다.