서버는 사용할 TLS 버전을 어떻게 결정합니까?

서버는 사용할 TLS 버전을 어떻게 결정합니까?

이제 클라이언트와 서버 사이에 협상이 있다는 것을 이해합니다. 하지만 어떻게 될지는 어떻게 결정됩니까?섬기는 사람https 요청에 응답할 때 사용할 TLS 버전을 선택합니까? 예를 들어 최소 버전의 TLS에 대한 연결을 어떻게 제한할 수 있습니까? 또한 서버에서 사용하는 보안 인증서와 서버에서 사용하는 TLS 버전 간에 관계가 있나요? 일부 AWS 문서를 읽고 있는데 이것을 제안하는 것 같았습니다.

여기에 총 뉴비가 있습니다. 이것이 잘못된 질문이라면 사과드립니다. 나는 대답으로 가서 읽을 수있는 링크를 신경 쓰지 않습니다.

답변1

그러면 서버가 https 요청에 응답할 때 사용할 TLS 버전을 선택하는 방법은 어떻게 결정됩니까?

TLS 핸드셰이크에서 클라이언트는 서버에 수행할 수 있는 최상의 버전을 알립니다. 서버가 클라이언트 버전과 같거나 그 이하의 프로토콜 버전을 지원하는 경우 가장 좋은 버전으로 응답합니다. 서버가 이들 중 어느 것도 지원하지 않으면 핸드셰이크가 실패합니다. 서버가 클라이언트가 지원하지 않는 버전으로 응답하면 핸드셰이크도 실패합니다.

또한 서버에서 사용하는 보안 인증서와 서버에서 사용하는 TLS 버전 간에 관계가 있나요?

TLS 프로토콜 버전과 사용된 인증서 간에는 거의 관계가 없습니다. 오랫동안 사용되지 않았던 SSLv3과 TLS 1.x 버전의 프로토콜 사이에는 TLS 1.x만 확장 기능을 지원한다는 점에서 약간의 차이가 있습니다. 중요한 확장은 server_name(SNI - 서버 이름 표시) 여기서 클라이언트는 연결하려는 도메인을 지정합니다. 동일한 IP 주소에 여러 인증서가 있는 경우 서버는 적절한 인증서를 선택할 수 있습니다.

답변2

저는 TLS 프로토콜 핸드셰이크 협상 전문가가 아니므로 여기에 '대략적인' 답변이 있습니다. (전문가 여러분, 제가 틀렸다면 정정해 주십시오.) * 여기서는 TLS 버전에 대해서만 이야기하고 있습니다. 사이퍼가 아닙니다.

시나리오 1: 클라이언트는 가능한 가장 높은 버전의 TLS를 시도합니다. 클라이언트가 1.1(OLD) 및 1.2를 지원한다고 가정해 보겠습니다. 그런 다음 서버는 가능한 가장 높은 버전을 사용하여 연결합니다. 1.2가 되기를 바랍니다.

시나리오 2: 귀하의 클라이언트는 1.2 이상을 지원하고 귀하의 서버는 1.1에 대해서만 알고 있는 오래되고 업데이트되지 않은 시스템입니다.

시나리오 3: 2와 동일하지만 그 반대입니다. 연결도 작동하지 않습니다.

클라이언트는 연결을 협상할 수 없습니다. 거기에서 멈출 것이다.

시나리오 4: 클라이언트는 서버뿐만 아니라 버전 1.1 및 1.2를 지원하지만 서버 관리자가 1.2만 사용하여 강제 연결하도록 구성했다고 가정하면(예: Apache HTTPD) 클라이언트는 1.2를 사용하게 됩니다.

그리고 TLS 1.3도 있습니다.... 하지만 그것도 같은 생각일 겁니다.(아이디어)

관련 정보