2011-10-16 4 views
5

현재 필자가 작성한 http 프록시에 tls 핸드 셰이크를 구현하려고합니다. 나에게 OpenSSL을 사용하여 작업을 수행 할 수 있음을 알고 있지만 직접 작성하는 데 관심이 있습니다.TLS 핸드 셰이크 메시지 구문 분석

현재 TLS RFC를 통해 작업 중이며 ClientHello 메시지를 구문 분석하는 방법에 대해 혼란 스럽습니다. 특히 세션 ID가 있거나 없을 수도 있고 암호 세트 수에 숫자가없는 것 같습니다. 또는 압축 방법.

누구든지이 작업을 수행하는 가장 좋은 방법을 알고 있습니까?

+3

"TLS 구현 방법"은 너무 광범위합니다. –

+0

내 문제는 모든 것을 구현하는 것과는 다르다. 문제는 상황이 선택 사항 인 경우를 처리하는 방법을 모른다는 것이고 얼마나 많은 항목이 있는지 알려주는 메시지의 요소가없는 것 같다. –

+2

왜이 일을하고 싶은지 모르겠다. CONNECT 명령 이외의 다른 방법으로 HTTP 프록시를 작성하기 위해 내용을 처리 할 필요는 없습니다. 프록시가 SSL 끝점 인 경우 반드시 OpenSSL을 사용해야하며 SSL 끝점이 아닌 경우 SSL을 다시 구문 분석 할 필요가 없으며 바로 끝까지 보내면됩니다. – EJP

답변

7

session_id 앞에는 길이가옵니다. 암호 스위트 및 압축 알고리즘과 동일합니다.

가변 길이 벡터가 표기법을 사용하여, 포괄적으로, 법적 길이의 부분 범위를 지정하여 정의됩니다 : 당신이 놓치고있는 무엇

는 RFC의 4.3 절입니다. 이 인코딩 된 경우 실제 길이는 스트림 바이트의 벡터 내용보다 앞에옵니다. 길이는 벡터의 지정된 최대 길이 (천장) 길이를 유지하는 데 필요한만큼 바이트를 소비하는 숫자 형식입니다. 실제 길이 필드가 0 인 가변 길이 벡터 을 빈 벡터라고합니다.

+0

예, 불행히도 나는 처음으로 그걸 놓쳤습니다. 나는 그것을 몇 번 더 읽고 마침내 그 선을 붙 잡았다. –

0

THIS INCREDIBLE BOOK을 살펴보십시오. 필자는 GPL 소프트웨어를 사용하지 않고 임베디드 시스템 용 TLS 1.2를 구현해야했으며, 이는 큰 도움이되었습니다.