2017-12-15 1 views
0

SSL/TLS를 통해 연결할 수있는 웹 서버를 만들고 싶습니다.브라우저는 SSL 세션 ID를 패킷에 어디에 저장합니까?

HTTPS 프로토콜은 상태가 없으므로 브라우저가 서버에 연결할 때마다 핸드 쉐이킹을 수행한다고 가정합니다. 동일한 클라이언트 브라우저에 연결될 때마다 재 핸드킹을 피하고 이전 핸드 셰이 킹과 동일한 정보를 사용하고 싶습니다.

서버가 이전 브라우저에 대한 재 연결임을 나타내는 서버의 경우 SSL 세션 ID를 사용해야합니다. 패킷에서 SSL 세션 ID는 어디에서 찾을 수 있습니까?

서버가 다시 연결된다는 것을 알기 위해서는 ID가 패킷 (예 : TCP 헤더)에 있어야한다고 생각합니다. 내가 잘못?

서버를 기초부터 작성 중이므로 어떤 라이브러리도 사용하지 않습니다. 나는 직접 패킷을 조작하고있다. 나는 이미 패킷 조작을위한 클래스를 만들었다. 그리고 TLS 레이어는 TCP 레이어 위에 있으므로 TLS 레이어 데이터에 액세스하는 데 많은 노력을 필요로하지 않습니다. '기록 레이어'데이터 구조를 보았지만 세션 ID를 찾을 수 없습니다. 어디 있니?

이미 HTML 서버 부분을 완료했으며 SSL/TLS 기능을 추가하려고합니다.

안녕 프로토콜 및 핸드 셰이 킹이 어떻게 수행되는지 알고 있습니다. 핸드 셰이 킹 이후 주요 데이터의 다음 패킷에있는 서버에 손상된 SSL 세션 ID가 어떻게 알려 졌는지 알고 싶습니다.

+0

TLS 세션 다시 시작은 TCP 수준이 아니라 TLS 수준에서 수행됩니다. 즉, 정보는 TCP 헤더가 아니라 TLS 메시지, 특히 브라우저의 경우 TLS ClientHello에 있습니다. –

+0

그렇다면 상태없는 서비스 임에도 불구하고 웹 서비스에서 ID를 제거하는 방법은 무엇입니까? – Parker

+0

SSL/TLS 세션 ID와 HTTP 세션 ID가 섞여 있다고 생각합니다. 둘 다 다른 목적을 위해 완전히 다른 것입니다. 첫 번째는 TLS 레벨에서, 두 번째는 HTTP 레벨에서 (보통 쿠키로) 전송됩니다. –

답변

0

나는 내 자신의 질문에 대답하고있다. 제 가정이 잘못되었다고 생각합니다. hello 프로토콜과 다른 절차는 이후에 다른 연결을 사용할 것이라고 생각했습니다.

나의 새로운 제안은 심지어 HTTPS 프로토콜의 는 연결이 데이터 전송의 일부 금액 핸드 셰이크의 시간 동안 유지한다 "입니다. 이 HTTPS 전송의 단위입니다. 그래서 모든 HTTPS 연결에서 시작됩니다 안녕하세요 프로토콜 . "

그래서 https 연결이 이루어질 때마다 서버는 hello 프로토콜에서 세션 ID를 인식하고 이미 설정된 세션 중에서 ID를 찾습니다.

나는 이것에 대해 명확한 언급을 찾지 못했습니다. 그러나 수집 한 정보에서이 방법으로 결론을 내 렸습니다. 누군가 명확한 답변을 알고 있다면 여기에 게시하십시오.

관련 문제