2011-10-16 1 views
3

저는 FTP 클라이언트 (WinSCP)를 구현하는 오픈 소스 개발자입니다.OpenSSL과의 FTP 전송 연결에서 TLS/SSL 세션 재개

전송 소켓의 FTP 제어 소켓에서 TLS/SSL 세션을 다시 시작하려고합니다. 일부 FTP 서버에서이를 요구하기 시작했습니다.

예. vsftpd에 : 나는 SSL 층을 구현하기 위해 OpenSSL을 사용하고
https://scarybeastsecurity.blogspot.com/2009/02/vsftpd-210-released.html


.

내가 세션 이력서를 구현하는 확실한 방법을 시도했습니다, 즉 여기처럼 SSL_get1_sessionSSL_set_session를 사용 :
https://www.linuxjournal.com/article/5487?page=0,1

를 작동하지 않지만. 나는 여전히 vsftpd와 같은 TLS 세션 이력서가 필요한 FTP 서버에 연결할 수 없습니다.

내 경우에 문제가있을 수 있다는 의심이 들지만 동일한 TLS 세션을 공유 할 수없는 두 개의 병렬 TLS 연결이 있습니다. linuxjournal.com의 예제와 다른데, 첫 번째 연결이 닫히기 전에 먼저 닫힙니다.

나는 또한 세션을 복제하는 몇 가지 방법을 시도했다. i2d_SSL_SESSION/d2i_SSL_SESSION을 사용하십시오. 도움도 안 줬어.

저는 정말로 여기에서 붙어 있습니다.

미리 도움을 청하십시오.

답변

1

SSL_get1_sessionSSL_set_session을 최종적으로 사용했습니다. 나는 처음 시도 할 때 잘못 사용 했음에 틀림 없다.

  • 제어 연결에서 TLS/SSL 세션이 설정되면 SSL_get1_session을 사용하여 세션을 검색하십시오. 특히 SSL_set_info_callback에 의해 설정된 콜백에서 where & SSL_ST_CONNECT으로 처리합니다.
  • 데이터 연결을 위해 TLS/SSL 세션을 설정할 때 제어 연결 세션에 대한 참조로 SSL_set_session으로 전화하십시오.
2

당신은 구체적으로 SSL_CTX 객체에 클라이언트 세션 캐싱을 사용하도록 설정해야합니다 :

SSL_CTX_set_session_cache_mode(ctx, SSL_SESS_CACHE_CLIENT); 

는 또한 SSL_CTX_set_timeout()를 사용하여 기본 세션 캐시 시간 제한 (기본값은 300 초입니다) 증가 할 수도 있습니다.

(동일한 SSL_CTX 개체에서 SSL 개체를 만들어야합니다.)