2017-10-04 1 views
0

boost::asio 라이브러리는 boost::asio::ssl::stream 데코레이터 클래스 템플릿에 소켓 객체를 래핑하여 소켓을 통해 SSL 암호화 트래픽을 지원합니다. 예를 들어 : tcp::socketboost :: asio :: ssl :: stream :: next_layer()에 대한 읽기 또는 쓰기가 SSL 암호 해독/암호화를 우회합니까?

boost::asio::ssl::stream<boost::asio::ip::tcp::socket> sslSocket; 

일부 작업은 ssl::stream에서 지원되지 않습니다. ssl::stream::next_layer 메서드를 호출하면 래핑 된 객체에 대한 참조가 반환되고 ssl::stream에서 지원되지 않는이 방법은 래핑 된 객체에서 직접 수행 할 수 있습니다.

그러나 래핑 된 소켓 객체에서 직접 읽기 및 쓰기 작업을 수행하면 sslSocket에 올바른 SSL 동작 및 읽기 및 쓰기가 무시되고 ssl::stream 객체를 직접 처리해야합니다.

이 것이 맞습니까? 또는 래핑 된 객체에 대한 읽기 및 쓰기 작업을 자유롭게 수행 할 수 있습니까?

답변

1

기본 소켓을 사용하여 암호화를 우회 할뿐만 아니라 모든 프로토콜을 우회합니다. 핸드 셰이크, 협상, 사이드 채널, Keepalive 등을 포함합니다.

실제로 작동한다는 보장은 없습니다. SSL 작동을 처음 초기화하기 전에 기본 소켓을 사용할 때만 작동 할 수 있습니다.

그 이상으로, 그것은 openssl에 의해 관리되는 소켓의 filedescriptor에 임의의 데이터를 쓰는 것과 같습니다.

관련 문제