2013-03-15 2 views
3

http 및 https 세션 모두에 대해 SSLServerSocket 클래스를 사용하고 하나의 포트를 청취 할 수 있습니까? (클라이언트가 http 또는 https와 함께 제공되는 자동 검색 기능을 사용)? 또는 두 개의 포트를 열어서 https에 SSLServerSocket을 사용하고 http에 대해 SSLServerSocket을 사용해야합니까? 당신이 뭘 하려는지안전하지 않은 http를위한 SSLSocket?

감사

+0

포트 443의 클라이언트와 HTTP를 SSLServerSocket으로 대화하고 싶습니까? 그게 가능하다면 나는 아주 놀랄 것입니다. 그러나 꼭 시도하십시오. –

+3

이 답변을 확인하십시오. 한 번 알려 주시면 도움이 될 것 같습니다. http://stackoverflow.com/a/13450695/655756 – n1ckolas

답변

4

포트 통일라고합니다. 예를 들어 implemented in Grizzly입니다.

당신은 정말 똑바로 읽기에 악수를 시작할 것이기 때문에 직접 HTTP 및 HTTPS 트래픽을 청취하는 SSLServerSocket를 사용할 수 있지만, 일반 ServerSocket이 일반 Socket을 수락 할 때 검색을 시도 할 수 있습니다 처음 몇 바이트를 읽은 다음 TLS 클라이언트 hello 또는 HTTP 요청을 가져온 다음 convert it to an SSLSocket을 읽습니다.

내가 Socket으로 시도했다고 말할 수는 없지만 TLS 클라이언트 Hello를 미리 읽고 필요한 경우 다시 푸시해야 할 항목이 possibly using a PushBackInputStream, as suggested by EJP입니다.

는 (지금까지 내가 알고 있어요으로 그리 즐은 SSLEngine 대신 이에 대한 SSLSocket 사용합니다.)

주 포트 통일을 사용하는 것은 매우 드문 것이다. 앞서 읽어야 할 오버 헤드가 무엇인지 모르겠습니다. 대신에 여러 개의 포트를 사용하는 것은 문제가되지 않습니다 (HTTP와 HTTPS는 기본 포트가 다르기 때문에 두 URL 중 적어도 하나에서 포트를 지정해야합니다).

+0

감사합니다.이게 정말 도움이됩니다. – Igor