2011-03-16 5 views
0

OpenSSL을 사용하여 서버/클라이언트 통신에 암호화를 추가 할 계획을 세웠습니다. 그러나 사용자가 SSL 채널을 사용하여 통신할지 여부를 선택하도록하고 싶습니다. 가장 쉬운 방법은 2 개의 소켓을 만들어 다른 포트에 바인드하는 것입니다.하지만 서버가 하나의 포트에서만 서비스를 제공하도록하고 싶습니다.동일한 서버 포트에서 SSL과 비 SSL을 모두 지원합니다.

클라이언트 수신 연결과 관련하여 SSL 및 비 SSL 통신을 모두 지원하는 서버 측 SSL 소켓을 여는 방법이 있습니까?

P. 내 C++ 코드에 OpenSSL 라이브러리를 사용합니다.

답변

1

TLS 클라이언트 hello는 표준 형식을 가지고 있습니다. 첫 번째 메시지의 처음 몇 바이트를 들여다보고이 메시지가 TLS 클라이언트 안녕하세요인지 여부를 감지 한 다음 그에 따라 응답 할 수 있습니다.

대체 솔루션은 포트 X에서 암호화되지 않은 서비스에 연결하고 TLS 계층을 처리 할 포트 Y에서 수신 대기하도록 stunnel을 설정하고 일반 텍스트를 로컬 포트 ​​X로 전달하는 것입니다. 두 포트에 서비스가 한 번만 실행됩니다.

관련 문제