Classic Load Balancer, Application Load Balancer 및 Network Load Balancer가 SSL/TLS(Secure Sockets Layer/Transport Layer Security) 세션 재개를 지원합니까?
해결 방법
모든 유형의 로드 밸런서는 SSL/TLS 세션 재개를 지원합니다. 하지만 로드 밸런서가 지원하는 연결 방법은 저마다 다릅니다.
SSL/TLS 연결 방법
TLS 핸드셰이크에는 전체 핸드셰이크와 축약된 핸드셰이크라는 두 가지 유형이 있습니다. 전체 핸드셰이크는 한 번만 수행됩니다. 핸드셰이크 후 클라이언트는 서버와 SSL/TLS 세션을 설정합니다. 후속 연결에서는 이전에 협상된 세션을 더 빠르게 재개하기 위해 축약된 핸드셰이크가 사용됩니다.
TLS 연결을 설정하거나 재개하는 방법에는 두 가지가 있습니다.
- SSL 세션 ID - 이 방법은 완전히 협상된 연결이 종료된 후 일정 기간 동안 세션 보안 파라미터를 유지하는 클라이언트와 서버를 기반으로 합니다. 세션 재개를 사용하려는 서버는 세션에 대해 세션 ID라고 하는 고유한 식별자를 할당합니다. 그런 다음, 서버는 ServerHello 메시지에서 세션 ID를 클라이언트로 다시 전송합니다. 이전 세션을 재개하려면 클라이언트가 ClientHello 메시지에 적절한 세션 ID를 제출해야 합니다. 서버가 캐시에서 해당 세션을 찾고 세션 재개 요청을 수락하면 서버는 동일한 세션 식별자를 다시 전송하고 축약된 SSL 핸드셰이크를 사용하여 계속 진행합니다. 그렇지 않은 경우에는 서버가 새 세션 식별자를 발급하고 전체 핸드셰이크로 전환합니다.
- SSL 세션 티켓 – 이 방법은 서버 측 스토리지가 필요하지 않습니다. 서버는 모든 세션 데이터를 수집하여 암호화한 후 티켓 형식으로 클라이언트에 다시 보냅니다. 후속 연결에서 클라이언트는 티켓을 서버에 다시 제출합니다. 그런 다음, 서버는 티켓 무결성을 확인하고, 콘텐츠를 복호화하고, 그 안에 있는 정보를 사용하여 세션을 재개합니다. 서버 또는 클라이언트가 이 확장을 지원하지 않는 경우 SSL에 내장된 세션 식별자 메커니즘으로 대체할 수 있습니다.
각 로드 밸런서 유형에 대해 지원되는 SSL/TLS 연결 방법
- Classic Load Balancer는 세션 ID 기반 SSL/TLS 세션 재개는 지원하지만 세션 티켓 기반 SSL 세션 재개는 지원하지 않습니다. SSL 세션 캐싱은 노드 수준에서 지원됩니다. 클라이언트가 노드 A에서 수신한 SSL 세션 ID를 사용하여 노드 B에 연결하면 SSL 핸드셰이크가 전체 핸드셰이크로 돌아갑니다. 그 이후에는 노드 B에 의해 새 SSL 세션 ID가 생성됩니다.
- Application Load Balancer는 세션 ID와 세션 티켓 기반 SSL 세션 재개를 모두 지원합니다. 세션 ID와 세션 티켓은 모두 노드 수준에서 지원됩니다. 클라이언트가 노드 A에서 수신한 SSL 세션 ID 또는 세션 티켓을 사용하여 노드 B에 연결하면 SSL 핸드셰이크가 전체 핸드셰이크로 돌아갑니다. 그 이후에는 노드 B에 의해 새 SSL 세션 ID와 세션 티켓이 생성됩니다.
- Network Load Balancer는 세션 재개에 대한 세션 티켓만 지원합니다. 세션 티켓을 사용한 재개는 리전 수준에서 지원됩니다. 클라이언트는 IP 주소 중 하나를 사용하여 Network Load Balancer로 TLS 세션을 재개할 수 있습니다.